C# 如何在用户关闭浏览器时通知Web服务器(在asp.net中)?

C# 如何在用户关闭浏览器时通知Web服务器(在asp.net中)?,c#,asp.net,ajax,C#,Asp.net,Ajax,我正在开发一个中继聊天应用程序,分为两个窗格 右窗格->用户的聊天响应(这使用放置在更新面板内的ASP.NET多行标签控件,因此当任何用户键入响应并提交时,会将其添加到此控件) 左窗格->当前联机的用户列表(使用ASP.NET列表控件,该控件也位于更新面板中) 下面是供用户输入文本的文本框和用于发布其响应的发送按钮 一切正常。但当用户关闭浏览器窗口而不是单击注销按钮时。左窗格上的列表未刷新 当用户注销时,这种情况会正常发生 如果用户关闭浏览器(甚至在服务器端的会话过期之前),是否有办法从列表中删

我正在开发一个中继聊天应用程序,分为两个窗格

右窗格->用户的聊天响应(这使用放置在更新面板内的ASP.NET多行标签控件,因此当任何用户键入响应并提交时,会将其添加到此控件)

左窗格->当前联机的用户列表(使用ASP.NET列表控件,该控件也位于更新面板中)

下面是供用户输入文本的文本框和用于发布其响应的发送按钮

一切正常。但当用户关闭浏览器窗口而不是单击注销按钮时。左窗格上的列表未刷新

当用户注销时,这种情况会正常发生

如果用户关闭浏览器(甚至在服务器端的会话过期之前),是否有办法从列表中删除用户名

抱歉,我无法显示屏幕截图

有人能提出一个想法和一个示例代码片段吗

谢谢


您可以,然后启动一个AJAX请求返回服务器,通知用户离开。

您可以,然后启动一个AJAX请求返回服务器,通知用户离开。

您可以通过另一种方式完成:定期通过AJAX调用从浏览器ping服务器。如果没有收到ping,请删除该用户。

您可以用另一种方法:定期通过ajax调用从浏览器ping服务器。如果没有收到ping,请删除用户。

我试过了。看来我们是在投票,这会消耗效率。我认为这是唯一可靠的方法。如果只在用户在给定时间内未发送任何消息的情况下ping,则可以提高效率。另外,对于空闲用户,您可以在每次ping之后动态增加超时时间间隔。看来我们是在投票,这会消耗效率。我认为这是唯一可靠的方法。如果只在用户在给定时间内未发送任何消息的情况下ping,则可以提高效率。对于空闲用户,您还可以在每次ping之后动态增加超时间隔。@bcwood。每当用户移动到另一个页面时,它就会触发。我不认为他们能够可靠地使用它来检测用户正在从这个论坛的阅读中关闭浏览器。我错过了什么吗?@klabranche但如果他们离开当前页面,他们就会离开聊天应用程序,这可能与关闭浏览器一样。@bcwood。每当用户移动到另一个页面时,它就会触发。我不认为他们能够可靠地使用它来检测用户正在从这个论坛的阅读中关闭浏览器。我错过了什么吗?@klabranche但如果他们离开当前页面,他们就会离开聊天应用程序,这可能与关闭浏览器一样。