假设两个玩家在两个不同的浏览器上玩游戏。游戏状态存储在会话变量中,每个浏览器都有不同的会话,但游戏对象需要两个玩家向前移动。在让玩家进入游戏页面之前,游戏经理确保已经登录了两个不同的会话。这将是一个多页游戏,有一个登录,选择颜色,并结束游戏。断开玩家连接最干净的方法是等到游戏结束,玩家可以选择不想再玩了。
如果一名玩家离开游戏页面,我们如何让另一名玩家知道游戏已经终止,这样我们就可以干净地断开剩余玩家的连接,让他回到登录页面,在那里我们等待新玩家。浏览器如何监听两个会话之间的断开连接?
会话不在浏览器端维护。两个浏览器都不知道会话。你可以有多种策略来实现这个结果
-
有许多客户端Java脚本可用,它们可以检测到用户正在离开页面,并显示适当的警告或向服务器发送用户已退出页面的消息。它们还可以检测到浏览器窗口正在关闭。你可以使用其中一个。
-
在服务器端,您必须检查用户的最后响应时间。当用户在预定义的时间内没有响应时,您可以认为他/她已断开连接。
-
您可以在asp.net中配置会话超时。当会话到期时,您还会在global.asax文件中获得一个事件。通过这种方式,您将能够确定用户已断开连接。
我建议您应该使用这三种方法的组合来实现结果。如果其中一个失败了,另一个就会上场。