【发布时间】:2013-11-21 18:49:44
【问题描述】:
我正在使用 socket.io 库在 node.js 中编写游戏。它有一个服务器,有 2 个客户端连接并播放。我的游戏运行良好,但出现了问题。
如果已经连接的客户端再次连接到游戏,则将其视为第三次连接请求,这会使事情变得混乱。
当我在客户端浏览器未关闭时重新启动节点服务器时,通常会发生这种情况。我确实解决了这个问题。
【问题讨论】:
我正在使用 socket.io 库在 node.js 中编写游戏。它有一个服务器,有 2 个客户端连接并播放。我的游戏运行良好,但出现了问题。
如果已经连接的客户端再次连接到游戏,则将其视为第三次连接请求,这会使事情变得混乱。
当我在客户端浏览器未关闭时重新启动节点服务器时,通常会发生这种情况。我确实解决了这个问题。
【问题讨论】:
您可以使用 cookie。有这方面的模块:Socket.IO Authentication
但您也可以手动操作,因为它是一个简单的 cookie:
当用户连接时,添加一个步骤以在开始游戏之前识别用户。此步骤应创建 cookie 或使用现有的 cookie 并将其发送到服务器进行身份验证。
不难,你可以用javascript读写cookie,发送String/number到服务器也不成问题(websocket.emit('auth',whatever))。
【讨论】:
根据这个例子,使用cookies来识别socket.io中的会话看起来是可能的,但你最好使用查询字符串值来识别特定的浏览器或计算机:
【讨论】: