我正在使用node.js和socket.io进行HTML5游戏

我决定将其托管在Heroku上。

Heroku不允许使用WebSocket,因此我必须设置xhr-polling。 (Socket-io on Heroku

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


以前,我仅使用网络套接字

io.set( "transports", ["websocket"] );


现在,当客户端断开连接(关闭其窗口或刷新其页面)时,“断开连接”事件不会立即在服务器上触发(似乎正在等待客户端心跳超时)。

client.on( "disconnect", onClientDisconnect );


如果客户端重新加载,则在触发断开连接之前会收到多个连接事件。
我的问题在这里。

您有什么主意,为什么xhr-polling不会触发断开事件?
这是socket.io的错误配置吗?

谢谢。

最佳答案

它说here,您可以配置心跳。为了正确配置它,您必须同时在服务器和客户端(给出here)上调整心跳。

尝试降低心跳。它可以解决您的问题。
另一方面,appfog似乎支持websocket。

关于javascript - Socket.io需要很长时间才能触发断开连接事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14168842/

10-16 21:08