2011-04-21
socket.ioのwebsocket接続がdisconnected、connectedを繰り返してしまう
21 Apr 01:29:34 - Initializing client with transport "websocket" 21 Apr 01:29:34 - Client 37915311800315976 connected 21 Apr 01:29:56 - Client 37915311800315976 disconnected 21 Apr 01:30:02 - Initializing client with transport "websocket" 21 Apr 01:30:02 - Client 12511056219227612 connected 21 Apr 01:30:23 - Client 12511056219227612 disconnected 21 Apr 01:30:30 - Initializing client with transport "websocket" …
と、disconnected、connectedを繰り返す。
websocketは接続を維持するプロトコルじゃなかったのか。
しかも、よく見ると
約22秒間接続 → 切れる → 約6秒後再接続
と決まったパターンの繰り返し。
なにが悪いんだろう。むしろ正常なのか。それもわからない。websocketビギナー。
サーバ側のコード(socket.io版)
var http = require('http'), io = require('socket.io'); server = http.createServer(function(req, res){ console.log('[http] on connection ' + connect_count); res.writeHead(200, {'Content-Type': 'text/html'});_ res.end('<h1>Hello world</h1>');_ }); server.listen(8000); var socket = io.listen(server); socket.on('connection', function(client){ client.on('message', function(){ console.log('on message ');}) client.on('disconnect', function(){ console.log('on disconnect ');}) });
クライアント側(ブラウザ)のコード
(このHTMLと中でロードするJSは別で立てたApacheが返している)
<script src="http://motoki.local/socket-io/socket.io.js"></script> <script> var socket = new io.Socket('motoki.local',{port:8000}); socket.port = 8000; socket.connect(); socket.on('connect', function(){console.log('connect');}) socket.on('message', function(){console.log('message');}) socket.on('disconnect', function(){console.log('disconnect');}) </script>
他のコードで試してみる
サーバ側を、socket.ioでなくで、
クライアント側も、socket.io.jsでなくブラウザネイティブのWebSocketで試してみる。
クライアント側(ブラウザのコード)
<html> <body> <script type="text/javascript"> var connect = function() { conn = new WebSocket("ws://motoki.local:8000/test"); }; window.onload = connect; </script> </body>
サーバ側(node-websocket-server版)
var ws = require('./node-websocket-server/lib/ws/server'); var server = ws.createServer(); //var ws = require("websocket-server"); server.addListener("connection", function(connection){ connection.addListener("close", function(){ console.log('client close'); }); }); server.addListener("close", function(connection){ console.log('close'); }); server.listen(8000);
うーん、ちゃんと接続切れない。原因不明。
そういえばNOD32がのHTTPチェックがきいていた。
でもこの前はsendが送れなかっただけのはず(その時はsocket.ioじゃなかったけど)
http://d.hatena.ne.jp/motsat/20110411/1302530960
一応今回もHTTPチェックを解除。
そして、socket.io版のコードを試す。
接続切れなくなった。
不思議なことが起こったら、NOD32を疑うことからはじめよう。忘れていました。
NOD32さんはHTML5未対応で、HTTPでのコネクション張ったのに、中ではおかしな(WebSocket)なやりとりしているから怒っているんだろうか。
トラックバック - http://d.hatena.ne.jp/motsat/20110421/1303346364
リンク元
- 45 http://pipes.yahoo.com/pipes/pipe.info?_id=242f50e5030d8e9e73ce52013bcbf820
- 6 http://www.google.co.jp/search?sourceid=chrome&ie=UTF-8&q=hatena+motsat
- 3 http://www.google.co.jp/search?sourceid=chrome&ie=UTF-8&q=motsat+hatena
- 2 http://ezsch.ezweb.ne.jp/search/?query=V8エンジンの欠点&start-index=6&adpage=3&ct=1301&sr=0101&t=20110426224724&filter=1
- 2 http://www.google.co.jp/search?hl=ja&q=hatena+motsat&aq=f&aqi=&aql=&oq=
- 1 http://b.hatena.ne.jp/keyword/vim?of=25
- 1 http://d.hatena.ne.jp/motsat
- 1 http://node-js.info/?p=169
- 1 http://node-js.info/?p=173
- 1 http://reader.livedoor.com/reader/
