我对 HTML5 新服务器发送事件的技术背景感兴趣。那里到底发生了什么?
- 您不需要服务器端的特殊功能 - 只需照常发送您的数据,例如html
- HTTP 仍然是一种请求/响应协议(protocol)。在我看来,新的内容类型“文本/事件流”不会改变这一点
那么这个概念只是“普通的旧长轮询”的封装版本吗? 另一方面,它通常被描述为与服务器的持久、双向连接……在我看来,这可能是不同的。我只是想了解这是如何在 http 之上工作的。
最佳答案
它更像是 forever frame 的编纂比长轮询,依靠 chunked transfer encoding而不是保持连接打开直到数据准备好。事件中发送的数据只是文本,尽管该文本当然可以是 HTML,但这取决于您的应用程序如何使用它执行适当的操作。事件流中的项目如下所示:
event: message
data: Any text data you want goes here
在浏览器中,当它收到此 block 时,您会在 EventSource
上看到一条事件 消息
,您可以使用熟悉的 addEventListener("message"捕获该消息,回调)
方法。
相对于永远框架(或长轮询)的主要优点是标准化接口(interface)(因此基本上不值得更新现有的工作代码),相对于 Web Sockets 的主要优点是它可以在不允许长时间运行进程的廉价共享主机上正常工作。
附注技术详情are all in the spec
关于javascript - HTML5 服务器发送事件 : technical details?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13361724/