そこで、package.json とかに npm で入れて欲しいやつを
"dependencies" : {
"socket.io" : "0.8.7",
"xmlhttprequest" : "1.3.0"
}
とか書いて(勿論これだけじゃダメだけど)も、
node.js のバージョンが0.4.12じゃnpm が動かねーよバーカってエラーが出るんだけど、
node -v
やると、node.js のバージョンが 0.6.8て出てきて、困ってた。
http://discuss.joyent.com/viewtopic.php?id=31932
ここでFixするやりかたがやっと出てきたので書いておきます。
Windowsだと、cmd.exe を開いて
ssh admin@your-machine.no.de ってやってrootで入って
sudo bash
vi /opt/nodejs/service-starter
service-starter をvi で開いて、
20行目の
NODE=/opt/nodejs/v0.4/bin/node
を
NODE=/home/node/local/nodejs/bin/node
に書き直して保存して、
一回 ssh からログアウトして、
ssh your-machine.no.de 今度は普通のユーザでログインして
node-service-deploy
ってやればいいみたいです。
あ、ssh の公開鍵とかあれこれやってからね。
このエラーのおかげで、昨日は色々困ってた。
困ったついでに、heroku でSocket.io でWebSocketもどきを動かすやり方を覚えた。
WebSocketもどきと書いたのは、
heroku ではまだWebSocketが使えない(今後使えるようになるかも知らん)ので、
xhr-polling でやるしかない。
サーバ側のJS
var io = require('socket.io').listen(3000); io.set("transports",["xhr-polling"]); //※ここ io.set("polling duration",10); //※ここ io.sockets.on('connection', function (socket) { socket.on('message', function (data){ try{ data = JSON.parse(data); socket.send("オウム返し" + data.messagebody); }catch(e){console.log(e);} }); });
クライアント側のJS
<script type='text/javascript' src='socket.io.js'></script> <script type='text/javascript'>
var socket = io.connect("http://hoge.herokuapp.com:3000/"); socket.on('message',function(data){ // なんかメッセージ貰ったとき try{ var json = eval("(" + data + ")"); if(!json || json == null || typeof(json) == "undfined"){ return; }
socket.send(json.messagebody);
}catch(e){ } }); socket.on('connect', function () {
data = {messagebody : "ちんちんもげろ"}; data = JSON.stringify(data); //接続できたとき socket.send(data); });
</script>
こんなんでいいみたいです。
クライアントが使う socket.io.js がどこにあるのかわからなかったから、socket.io 使わなかったけど、
https://github.com/LearnBoost/socket.io-client
ここにあるやつダウンロードして、
dist ていうディレクトリの中に
socket.io.js か、 socket.io.min.js のどっちかをコピーして使えばいいみたいですよ。
勉強になりましたねー。うほうほ。
xhr-polling 使ってみたけど、
とりあえずコンソールがエライことになるというか、
接続しては切断してまた接続しては切断するので、
やっぱ WebSocket 普通に使えたほうがいいなーという感じです。
あわただしそうで、大変そうだもの。サーバが。
0 件のコメント:
コメントを投稿