HTML5 Server发送事件:技术细节?

时间:2012-11-13 13:39:29

标签: javascript html5 server-sent-events

我对HTML5的新服务器发送事件的技术背景感兴趣。那里到底发生了什么?

  • 您不需要服务器端的特殊功能 - 只需像往常一样发送您的数据,例如HTML
  • HTTP仍然是请求/响应协议。新的内容类型“text / event-stream”在我看来并没有改变

这个概念是否仅仅是“普通的长轮询”的封装版本? 另一方面,它通常被描述为与服务器的持久,双向连接......在我看来这将是不同的东西。我只是想知道它如何在http。

之上起作用

1 个答案:

答案 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