我正在开发一个聊天应用程序,我使用 HashTable 来包含用户和操作员作为键,并将 ChatRoom 类的对象作为 HashTable 的值。主要问题是,当用户或操作员关闭浏览器或未正常退出时,会在会话结束时自动注销。
请帮我解决这个问题,以及如何在这个问题上使用 Global.asax。
我正在开发一个聊天应用程序,我使用 HashTable 来包含用户和操作员作为键,并将 ChatRoom 类的对象作为 HashTable 的值。主要问题是,当用户或操作员关闭浏览器或未正常退出时,会在会话结束时自动注销。
请帮我解决这个问题,以及如何在这个问题上使用 Global.asax。
您可以使用global.asax的session end事件来删除意外断开连接的用户:
void Session_End(Object sender, EventArgs E) {
// Clean up session resources
}
但要注意,当用户关闭浏览器或连接丢失时,会话并不会结束。它会在会话超时到达时结束。
添加一个Global.asax文件到你的网站中,在Session_End事件中,从你的哈希表中移除用户。
protected void Session_End(Object sender, EventArgs e)
{
// Remove user from HashTable
}
您可以使用始终在客户端运行的JavaScript向服务器发送信号,例如“我在这里”。如果下一个信号没有到达,您可以调用Leave();
。我使用AJAX来实现这一点。