【问题标题】:how to notify webserver when user closes the browser (in asp.net)?当用户关闭浏览器(在 asp.net 中)时如何通知网络服务器?
【发布时间】:2009-08-23 00:12:32
【问题描述】:

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

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

left panes -> 当前在线用户列表(这使用 ASP.NET 列表控件,它也放置在更新面板内)。

下面是用户输入文本的文本框和一个发送按钮以发布他的回复。

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

当用户注销时,它会正常发生。

如果用户关闭浏览器,有没有办法从列表中敲出用户名?(甚至在他的会话在服务器端过期之前)。?

抱歉,我无法曝光屏幕截图。

任何人都可以提出一个想法以及示例代码 sn-p。

谢谢

vijay

【问题讨论】:

    标签: c# asp.net ajax


    【解决方案1】:

    您可以通过其他方式执行此操作:定期使用 ajax 调用从浏览器 ping 服务器。如果没有收到 ping,请删除用户。

    【讨论】:

    • 我试过了。似乎我们正在投票,这会降低效率。
    • 我认为这是唯一可靠的方法。如果仅在用户在给定时间内未发送任何消息时才 ping,则可以提高效率。此外,对于空闲用户,您可以在每次 ping 后动态增加超时间隔。
    【解决方案2】:

    您可以use Javascript to detect when the browser has been closed,然后向服务器发起一个 AJAX 请求,通知用户离开。

    【讨论】:

    • @bcwood。每次用户移动到另一个页面时它都会触发。我不认为他们将能够可靠地使用它来检测用户正在关闭浏览器从该论坛的阅读中。我错过了什么吗?
    • @klabranche 但是如果他们离开当前页面,他们已经离开了聊天应用程序,这可能就像关闭他们的浏览器一样。
    猜你喜欢
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    • 2018-07-03
    • 1970-01-01
    • 2012-01-18
    相关资源
    最近更新 更多