Stack Overflow 如何在不重新加载页面的情况下通知服务器端事件?我在 Firebug 中没有看到任何请求
Posted
技术标签:
【中文标题】Stack Overflow 如何在不重新加载页面的情况下通知服务器端事件?我在 Firebug 中没有看到任何请求【英文标题】:How does Stack Overflow notify of server-side events without a page reload? I see no request in Firebug 【发布时间】:2012-09-07 15:57:38 【问题描述】:Stack Overflow 如何在不重新加载页面的情况下显示添加/编辑的答案消息?
是的,我知道 Ajax 会发生这种情况。所以我在浏览器中打开了 Firebug 来检查它,看看是否有任何请求在特定的时间间隔内到来。 但我没有看到 Firebug 中有任何请求。
我们可以在 Firebug 中不显示的情况下执行请求吗? 这背后是否还有其他想法,或者我的概念完全错误?
【问题讨论】:
这看起来像是 Meta 而不是 SO 本身的问题。 AFAIK,他们使用 WebSockets 来做到这一点。不是 AJAX。 它在萤火虫中显示ws://sockets.ny.stackexchange.com/
@Fluffeh 我不这么认为,这个例子恰好是 stackexchange,但问题是这是如何完成的。
不属于 Meta,这是一个典型的“它似乎正在使用 html 5 Web Sockets。它们基本上保持服务器和客户端之间的开放连接,除此之外,还允许客户端定义事件处理程序以处理从服务器接收到的新数据。
您可以在这里找到一些关于 WebSockets 的基本示例和概念:Introducing WebSockets: Bringing sockets to the web。
WebSocket 规范定义了一个建立“套接字”的 API Web 浏览器和服务器之间的连接。简而言之:那里 是客户端和服务器之间的持久连接 各方可以随时开始发送数据。
还有一个live demo 与服务器和客户端source code 可用。
您可能还会发现以下问题很有用:How do real time updates work?
【讨论】:
【参考方案2】:要添加到Xavi's answer,如果您想在不了解所有内部原理的情况下开始使用 Web 套接字,您可以尝试Pusher,这是一个用于多个平台(包括 php)的库,它在网络非常简单。
我不为 Pusher 工作;这只是我过去发现非常有用的产品。我一直将免费版本用于小型个人项目,但如果我在更大的应用程序上使用它,我可能会付费。
【讨论】:
以上是关于Stack Overflow 如何在不重新加载页面的情况下通知服务器端事件?我在 Firebug 中没有看到任何请求的主要内容,如果未能解决你的问题,请参考以下文章