【问题标题】:how the update messages in stack overflow site are being shown如何显示堆栈溢出站点中的更新消息
【发布时间】:2012-09-29 21:55:30
【问题描述】:

我想知道这个堆栈溢出站点中的更新消息是如何实现的。

更准确地说,例如,当我尝试回复问题并且正在输入我的回复时,我会在页面顶部看到一条消息,说明已添加新答案。这个功能是如何实现的。

AFAIK,可能的方式可以是 HTML5 websocket 或 serversocket 技术。 有没有其他方法可以实现这种推送通知系统,尤其是使用 java、spring 和 jquery 环境?

不知道如何标记这个问题。如果我错了,请更正标签。

【问题讨论】:

  • 我会提到socket.io,这是解决此类问题的出色解决方案,但不适合您的服务器端后端。

标签: java javascript ajax


【解决方案1】:

SO 使用reverse ajax/comet 技术来显示这些消息。我记得在meta 上阅读过有关此功能的一些讨论,目前无法准确找到它的链接。找到后会第一时间更新。

基于编程语言的框架名称可能会改变(websockets(或)socket.io等,),但最终它们都来自comet框架。

更新:

这里是 SO meta discussion 关于这个主题的。

【讨论】:

  • 感谢您的回复。等待其他回复,并将据此投票。但很高兴了解彗星
【解决方案2】:

有几种方法可以实现:

  • 轮询:使用 JQuery,您会定期(例如每 5 秒)发出一个请求,从服务器检索更新。
  • 流式传输:您发出请求,服务器没有为响应设置 Content-Length 并且“从不”关闭套接字。这样,您可以随时将数据从服务器发送到客户端。但这意味着对于每个客户端,您的服务器都会保留一个连接。
  • 长轮询:混合使用前两种方式。连接由服务器保持,但超时。如果没有新数据可用,服务器会关闭连接,客户端稍后会重新打开一个新数据。

这些是推送技术:http://en.wikipedia.org/wiki/Push_technology

当然有很多方法可以实现这一点。

【讨论】:

    【解决方案3】:

    我已经成功使用了 Direct Web Remoting 框架。 (DWR)。

    【讨论】:

    • DWR。另一个新事物。很高兴知道它。似乎非常有趣并且适合我的环境(java、spring、jquery)。一定要试一试
    猜你喜欢
    • 2014-06-07
    • 2010-10-19
    • 2011-05-12
    • 2019-05-18
    • 2014-05-02
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    相关资源
    最近更新 更多