您的位置  > 互联网

服务端触发一个事件,单向通信简直是杀鸡用牛刀

如果我使用它,我需要搭建一个服务器,并且有很多配置。 是全双工通信,单向通信简直就是杀鸡用牛刀。 使用轮询。 不说浪费服务器资源,还不一定实时。 如果订单处理速度慢,岂不是忽视了顾客吗? 还有其他选择吗? 当然!

1.上交所推送技术

SSE的全称是-sent,它是HTML 5规范的组成部分。 具体请前往MDN网站查看相关文档。 规范非常简单,主要由两部分组成:第一部分是服务器端和浏览器端之间的通信协议,第二部分是浏览器端可用的对象。 通信协议是基于明文的简单协议。 服务器响应的内容类型是“text/event-”。 响应文本的内容可以被视为由不同事件组成的事件流。 每个事件由两部分组成:类型和数据,并且每个事件可以有一个可选的标识符。 不同事件的内容由仅包含回车符和换行符的空行(“\r\n”)分隔。 每个事件的数据可能由多行组成。

如上图所示,每个事件之间用空行分隔。 每行由键值对组成。 如果键为空,则表示该行为已被注释,在处理过程中将被忽略。 例如,第 10 行。

第 1 行表示仅包含数据的事件。 会遵循默认事件(event)。 第 3-4 行代表一个附带事件。 第 6-8 行表示自定义事件。第 10-14 行表示多行数据事件,其中多行数据通过换行符链接。

主要定义包括以下内容:

SSE 仅在高级浏览器中可用,但请注意 IE 并不直接支持它。 IE上的对象不支持获取部分响应内容,所以不支持。 每次都有IE,怪不得快要被淘汰了。

2.上证VS

3.Mvc中的SSE

Mvc 支持 SSE。 如果你想声明一个SSE连接。 只需在控制器中声明一个这样的接口:

必须返回对象。 对象是分层的。 如果点对点,每个对象必须独立存储。 如果您正在广播,您可以共享一个对象。 根据SSE规范,它还必须声明为“text/event-”。 调用该接口将建立SSE连接。

您可以通过在另一个线程中调用 send 方法将事件发送到客户端。 您还可以在发送事件后调用方法来关闭 SSE 连接。

4.浏览器端

由于 SSE 是 HTML5 规范。 因此,APP必须有HTML来支持。 而IE要想支持的话,就需要使用一些兼容的开发包,比如库。 客户端只接受事件,所以开发比较简单:

总结

今天我们介绍SSE服务器推送。 与长时间的旋转训练相比,彗星来说,它的重量相对较轻。 在一些小规模需要服务器实时推送的业务场景中比较容易实现。 相信看完这篇文章你会很快上手。 在实际开发中,需要根据业务来进行这几种推送的技术选型。 没有最好,只有最适合。 对于大多数开发者来说,SSE 还不够熟悉。

相关代码云仓库: