我使用纯nodejs和Websocket模块编写了简单的聊天应用程序。一切正常,但是如果页面刷新的连接状态更改为closed
,并且说明中显示该内容Remote peer is going away
。我知道它是RFC 6455的标准代码,但是为什么我的连接没有随页面更新,所以聊天继续进行。如何在客户端处理页面刷新?
答案 0 :(得分:1)
在浏览器中刷新页面,关闭并释放与原始页面相关的所有资源,然后加载该页面的新副本并再次运行该页面中的任何Javascript。
因此,如果您的页面初始化代码包括打开服务器的webSocket,则该WebSocket将在重新加载页面时关闭。
这是在初始页面加载然后刷新时发生的情况:
如何在客户端处理页面刷新?
刷新后,浏览器将在您的页面中运行Javascript,并且该Javascript应该只打开一个新的webSocket连接并应该建立一个新的聊天连接。
仅供参考,您引用的that code至少有一个错误。例如,从服务器端索引中删除客户端的服务器端代码无法正常工作。它会记住将客户端连接添加到数组时的索引,并假定索引永不更改,但这只是错误的。随着客户端从阵列中添加/删除和它们连接/断开连接,索引可能会更改。如果要使用该代码,则必须对其进行修复/调试。
虽然可以使用Array
进行操作,但我自己也可以使用Set
,这样也可以更轻松地删除项目。