我目前正在开发一个实时应用程序,其中我将 Gorilla WebSocket 与 Next.js 结合使用。我面临的挑战之一是,当用户刷新页面时,会建立一个新的 WebSocket 连接。这会导致用户失去对会话或数据的控制,尤其是在连续性至关重要的多人游戏等场景中。
是否有推荐的方法或最佳实践来处理 WebSocket 连接,即使用户刷新页面也能保持会话完整性?理想情况下,我想确保用户保留其会话状态,并且在刷新时不会失去其位置或控制权。
我目前正在尝试使用 cookie 来存储客户端 ID,但我不确定如何在给定客户端 ID 的情况下将用户重新连接到同一 Websocket 连接。
将会话状态与连接分开存储,并为状态提供唯一标识符。
在处理程序中将 HTTP 升级到 WS 之前,请检查会话 ID cookie。 如果请求中存在有效的会话 ID cookie,则将该连接与该会话相关联。 否则,启动一个新会话并在升级参数中设置 Set-Cookie 标头。