我对 HTML5 的新服务器发送事件的技术背景感兴趣。那里真的发生了什么?
- 您不需要服务器端的特殊功能 - 只需像往常一样发送您的数据,例如 html
- HTTP 仍然是一个请求/响应协议。在我看来,新的内容类型“文本/事件流”不会改变这一点
那么这个概念只是“普通旧长轮询”的封装版本吗?另一方面,它通常被描述为与服务器的持久、双向连接。在我看来,这将是不同的东西。我只是想了解这如何在 http 之上工作。
我对 HTML5 的新服务器发送事件的技术背景感兴趣。那里真的发生了什么?
那么这个概念只是“普通旧长轮询”的封装版本吗?另一方面,它通常被描述为与服务器的持久、双向连接。在我看来,这将是不同的东西。我只是想了解这如何在 http 之上工作。
与长轮询相比,它更像是永久帧的编码,依赖于分块传输编码,而不是在数据准备好之前保持连接打开。事件中发送的数据只是文本,尽管该文本当然可以是 HTML,但这取决于您的应用程序来使用它做适当的事情。事件流中的项目如下所示:
event: message
data: Any text data you want goes here
在浏览器中,当它接收到这个块时,您会看到一个事件message
,EventSource
您可以使用熟悉的addEventListener("message", callback)
方法捕获该事件。
永久帧(或长轮询)的主要好处是标准化的接口(基本上,不值得更新现有的工作代码), Web 套接字的主要优点是它可以在长时间运行的进程的廉价共享主机上正常工作不允许。
PS 技术细节都在规范中