【发布时间】:2012-12-19 13:58:22
【问题描述】:
我正在使用 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的错误配置吗?
谢谢。
【问题讨论】:
-
没有办法知道使用 xhr-polling 的客户端是否断开连接,直到他们没有响应心跳,因为它不使用持久连接。
标签: javascript node.js heroku socket.io