如何使用 SignalR 和 MVC 管理 playerId
How to manage playerIds with SignalR and MVC
在 SignalR
和 MVC
的游戏开发中,我必须管理玩家 ID。
对于 MVC
,所有 Controllers
都会为每个 AJAX
请求重新创建,因此您无法存储任何内容,除非您使用数据库或将其存储在 cookie 中。
SignalR
是否有任何工具可以用来为游戏保留诸如 playerIds
之类的东西以缓解这种情况?
您无法从 SignalR 获取连接 ID,但您可以在 OnConnected
方法上为每个用户注册一个 ID。只需在您的中心覆盖该功能即可。
可能有更简单的方法,但一个选择是将会话密钥传递给 JS,然后您可以从 JS 将会话密钥(或任何其他唯一标识符)传递回每个命令的服务器.
例如,当用户首次连接时:OnConnected() -> 从 JS 获取用户唯一 ID 并将其保存在本地以将每个用户映射到唯一 ID(可能将该 ID 保存为组 ID,以便您可以根据 id 调用向该用户发送回消息)。
在发送到中心的每个请求之后,您可以将唯一 ID 附加到它,然后您可以随意使用它。
我很确定您可以找到更简单的方法来定义唯一标识符,也许还有更合适的方法将您的数据保存在中心。
这么一想,你也应该看看this。
在 SignalR
和 MVC
的游戏开发中,我必须管理玩家 ID。
对于 MVC
,所有 Controllers
都会为每个 AJAX
请求重新创建,因此您无法存储任何内容,除非您使用数据库或将其存储在 cookie 中。
SignalR
是否有任何工具可以用来为游戏保留诸如 playerIds
之类的东西以缓解这种情况?
您无法从 SignalR 获取连接 ID,但您可以在 OnConnected
方法上为每个用户注册一个 ID。只需在您的中心覆盖该功能即可。
可能有更简单的方法,但一个选择是将会话密钥传递给 JS,然后您可以从 JS 将会话密钥(或任何其他唯一标识符)传递回每个命令的服务器.
例如,当用户首次连接时:OnConnected() -> 从 JS 获取用户唯一 ID 并将其保存在本地以将每个用户映射到唯一 ID(可能将该 ID 保存为组 ID,以便您可以根据 id 调用向该用户发送回消息)。 在发送到中心的每个请求之后,您可以将唯一 ID 附加到它,然后您可以随意使用它。
我很确定您可以找到更简单的方法来定义唯一标识符,也许还有更合适的方法将您的数据保存在中心。
这么一想,你也应该看看this。