我对HTML5的新服务器发送事件的技术背景感兴趣。那里到底发生了什么?
这个概念是否仅仅是“普通的长轮询”的封装版本? 另一方面,它通常被描述为与服务器的持久,双向连接......在我看来这将是不同的东西。我只是想知道它如何在http。
之上起作用答案 0 :(得分:3)
这比forever frame的编码更长,而不是长期轮询,依赖于chunked transfer encoding,而不是在数据准备好之前保持连接打开。事件中发送的数据只是文本,虽然该文本当然可以是HTML,但应由您的应用程序来处理相应的内容。事件流中的项目如下所示:
event: message
data: Any text data you want goes here
在浏览器中,当它收到此块时,您会在message
上看到一个事件EventSource
,您可以使用熟悉的addEventListener("message", callback)
方法捕获该事件。
永远框架(或长轮询)的主要好处是标准化界面(基本上,不值得更新现有的工作代码),优于Web Sockets的主要优点是它可以在廉价的情况下正常工作共享主机,不允许长时间运行的进程。
P.S。技术细节are all in the spec