服务器发送的事件是如何实现的?

时间:2013-12-13 17:13:15

标签: server-sent-events

我看了herethere,试图找出传输级别上服务器发送的事件。我还不确定。

两个消息来源声称他们“只是http”。但是,我至少有两种方式可以解释这样的陈述。

当我第一次阅读这些文章时,我认为这意味着服务器向同一端口上的客户端发起请求,其他一些常规http请求来自之前已经创建了服务器的客户端。这应该适用于普通家用路由器的地址转换,但我想知道防火墙在企业环境中的含义。

然而,稍后,我尝试将SignalR与Silverlight客户端一起使用,在我的简单示例中,它声称使用服务器发送的事件作为传输。这是有道理的,因为SignalR文档说SilverW不支持WebSockets,而服务器发送的事件是下一个最佳选择。

在小提琴手中,我注意到一个永不完成的请求 - 一个悬挂式的获取 - 就像你期望的长轮询传输一样。然而,与长轮询相反,请求永远不会完成,即使实际发送数据也是如此。 Wireshark显示这个请求确实用于建立从服务器客户端的单向通道:它的响应被分块,并且每个消息都会被服务器发送一个块。

但是,当然,用http来说,这仍然是从客户端到服务器的请求

由于我找不到任何提及这个相当重要的信息的来源,我问是否有人可以验证这种方法确实称为服务器发送的事件,而我的SignalR客户端不是骗我的。 / p>

(PS:写完问题之后我注意到server-sent-events标签已经告诉我该技术使用了从客户端服务器的持久请求这几乎是我所寻求的全部确认。无论如何我都会提交这个问题以防有人找到这些信息。)

2 个答案:

答案 0 :(得分:1)

在写完问题之后,我注意到server-sent-events标签已经告诉我该技术使用从客户端到服务器的持久请求。这几乎是我所寻求的全部确认。无论如何我都会提交这个问题,以防有人找到这些信息。

答案 1 :(得分:0)

考虑像这样的服务器发送事件,当服务器收到SSE请求时,数据作为写入流从服务器发送(因此对于SSE,我们使用文本/流格式)。因此,只要有新数据,它就会自动推送到该流。客户收到它。它是单向流连接。如果您需要更多信息,请添加评论。