触发断开事件之前,Socket.io需要很长时间
我正在使用node.js和socket.io来做HTML5游戏
我决定把它放在Heroku上 。
Heroku不允许使用WebSocket,所以我必须设置xhr-polling。 ( Heroku上的Socket-io )
io.configure( function() { io.set( "transports", ["xhr-polling"] ); io.set( "polling duration", 10 ); } );
之前,我只使用networking套接字
io.set( "transports", ["websocket"] );
现在,当一个客户端断开(closures他的窗口或刷新他的页面)时,事件“disconnect”不会立即在服务器上触发(看起来它正在等待客户端心跳超时)。
client.on( "disconnect", onClientDisconnect );
如果客户端重新加载,我会在断开连接之前获得多个连接事件。 我的问题在这里。
你有什么想法,为什么xhr-polling不会触发断开事件? 这是一个错误的socket.ioconfiguration?
谢谢。
它在这里说,你可以configuration心跳。 要正确configuration它,您必须在服务器和客户端(在此给出)调整心跳。
尝试降低心跳。 这可能会解决你的问题。 另外,appfog似乎支持websocket。
只要configuration会话身份validation,你就可以知道客户端连接了什么。 例如
io.set('authorization', function(handshakeData, ack) { var cookies = require(...); var signedCookies = parseCookies(cookies, secret); sessionStore.get(signedCookies['connect.sid'], function(err, sessionData) { handshakeData.session = sessionData || {}; handshakeData.sid = signedCookies['connect.sid'] || null; ack(err, err ? false : true); }); });