如果用户刷新页面或离开页面,HTML5 Web Sockets 的行为会很奇怪。在页面重新加载期间,网络服务器和浏览器之间的套接字连接似乎保持打开状态,并且如果页面在浏览器中重新加载,则在 Firefox 和 Chrome 中关闭。这意味着它只在浏览器和服务器之间建立连接每秒钟工作一次,因为套接字在 reload 时被浏览器关闭。Firefox 的 Firebug 控制台中的错误消息是“与 ws://.../websocket 的连接在页面加载时被中断”。显然,当页面重新加载时 websocket 连接仍然打开,这意味着连接在页面加载期间关闭,而不是每隔一个页面加载打开一次。Websocket-Rails宝石)
==> first page load
[ConnectionManager] Connection opened: #<Connection::fef69428febee72f4830>
[Channel] #<Connection::fef69428febee72f4830> subscribed to channel xyz
==> second page load
[Channel] #<Connection::dfc4b33090b95826e08e> unsubscribed from channel xyz
[ConnectionManager] Connection closed: #<Connection::dfc4b33090b95826e08e>
有没有办法在onbeforeunload
Javascript事件中关闭所有打开的套接字和连接,比如(在Coffeescript中)..
window.onbeforeunload = () ->
close_all_sockets()