4

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

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

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

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

4

3 回答 3

6

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

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

更新:

这是关于这个主题的SO 元讨论。

于 2012-10-09T14:26:27.207 回答
2

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

于 2012-10-09T14:29:40.227 回答
2

有几种方法可以实现:

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

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

当然,有很多方法可以实现这一目标。

于 2012-10-09T14:33:22.973 回答