2012-02-28 5 views
3

socket.io에 문제가 있습니다.Node.js 및 socket.io - 핸드 셰이크되지 않은 클라이언트가 다시 연결해야합니다.

이 오류 : -

require.paths.unshift(__dirname + '/../../lib/'); 

var express = require('express'); 
var app = express.createServer(); 
var io = require('socket.io').listen(app); 
var stylus = require('stylus'); 
var mysql = require('mysql'); 

app.use(express.bodyParser()); 
app.use(express.cookieParser()); 

app.use(stylus.middleware({ src: __dirname + '/public', compile: compile })) 
app.use(express.static(__dirname + '/public')); 
app.set('views', __dirname); 

app.set("view options", { layout: false }); 

app.register('.html', { 
    compile: function (str, options) { 
     return function (locals) { 
      return str; 
     }; 
    } 
}); 

function compile(str, path) { 
    return stylus(str) 
     .set('filename', path) 
     .use(nib()); 
}; 

app.get('/', function (req, res) { 
res.render('index.html', { layout: false }); 
}); 


io.configure(function() { 
    io.set('transports', ['websocket','flashsocket','xhr-polling']); 
    io.set('polling duration', '10'); 
}); 

io.sockets.on('connection', function (socket) { 

    console.log("Connect with ID: " + socket.id); 

    socket.emit("sendid", {id: socket.id}); 

    socket.on('disconnect', function() { 
     console.log("Disconnect with ID: " + socket.id); 
    }); 

}); 

app.listen(3000); 
: :이 간단한 응용 프로그램이

debug - setting poll timeout 
    debug - clearing poll timeout 
    debug - xhr-polling writing 7:::1+0 
    debug - set close timeout for client 17348980511779302969 
    warn - client not handshaken client should reconnect 
    info - transport end 

경고 클라이언트하지 handshaken 클라이언트가 콘솔에서

을 다시 연결해야합니다 나는 오류 목록을

클라이언트 코드 :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
<head> 
    <title>Socket.IO - test</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <script src="/socket.io/socket.io.js" type="text/javascript"></script> 
    <script type="text/javascript"> 

     var WEB_SOCKET_SWF_LOCATION = './WebSocketMain.swf'; 

    var socket = io.connect(null, { 
      'connect timeout': 500, 
      'reconnect': true, 
      'reconnection delay': 500, 
      'reopen delay': 500, 
      'max reconnection attempts': 10 
     }); 

    socket.on('sendid', function (data) { 
      alert("Your socket ID is: " + data.id); 
     }); 

    </script> 
</head> 
<body> 
Test socket.io. 
</body> 
</html> 

답변

4

socket.iosocket.io-client의 최신 버전을 다운로드했습니다.

클라이언트 측에서 socket.io에 연결할 URL과 포트를 설정했습니다.

var socket = io.connect('http://domain.com:port', { 
      'connect timeout': 500, 
      'reconnect': true, 
      'reconnection delay': 500, 
      'reopen delay': 500, 
      'max reconnection attempts': 10 
     }); 
+3

나는 socket.io 0.9.9를 가지고 있으며 오류를 막지 않습니다. 내가이 오류 (10k 사용자)를 많이 얻을 수있는 앱을 다시 시작할 때 – nax

+0

@ 제난 : 제안 된대로 코드를 업데이트 한 후에도 여전히 동일한 오류가 발생합니다. 그 해결 방법은 무엇입니까? – Pritam

관련 문제