html5 的server-sent event事件还需要客户端请求服务器端才能推送吗?

html5 的server-sent event事件还需要客户端请求服务器端才能推送吗?,第1张

根据w3school原文

This was also possible before, but the web page would have to ask if any updates were available. With server-sent events, the updates come automatically.

以下是个人理解

这个event是需要客户端发送给服务器一个request让服务器来查看是否有更新,然后如果有更新服务器将更新自动发回客户端,

所谓的 one way messaging,指的是客服端与服务器成功建立了EventSource后,客户端发的request不需要夹带任何信息比如user id等,然后服务器将通过这个通道直接发送回message

希望能帮到您

主要介绍其中的五种实现方式:短轮询、Comet、Flash XMLSocket、Server-sent、WebSocket

1、短轮询

指在特定的的时间间隔(如每10秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客户端的浏览器。浏览器做处理后进行显示。无论后端此时是否有新的消息产生,都会进行响应

2、Comet

包括了长轮询和长连接,长轮询是客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求;长连接是在页面中的iframe发送请求到服务端,服务端hold住请求并不断将需要返回前端的数据封装成调用javascript函数的形式响应到前端,前端不断收到响应并处理

3、Flash XMLSocket

在 HTML 页面中内嵌入一个使用了 XMLSocket 类的 Flash 程序。JavaScript 通过调用此 Flash 程序提供的socket接口与服务器端的socket进行通信。JavaScript 在收到服务器端以 XML 格式传送的信息后可以很容易地控制 HTML 页面的内容显示

4、Server-sent

服务器推指的是HTML5规范中提供的服务端事件EventSource,浏览器在实现了该规范的前提下创建一个EventSource连接后,便可收到服务端的发送的消息,实现一个单向通信。客户端进行监听,并对响应的信息处理显示

5、WebSocket

WebSocket是HTML5下一种新的协议,是基于TCP的应用层协议,只需要一次连接,便可以实现全双工通信,客户端和服务端可以相互主动发送消息。客户端进行监听,并对响应的消息处理显示

针对自己系统的应用场景选择合适的推送方案才是合理的,因此最后简单说一下实现个性化推送的两种方式。第一种很简单,直接使用第三方实现的推送,无需复杂的开发运维,直接可以使用。第二种就是自己封装,可以选择如今较为火热的WebSocket来实现系统的推送。

关于第三方推送平台,极光推送,操作简单,稳定性高,送达率快

在一对一直播交友源码的开发过程中,即时通讯是最关键的功能之一。那一对一直播源码系统是如何实现即时通讯的呢?

即时通讯就是实时语音文字视频等交流,实现即时通讯目前有四种方式:短轮询、长轮询、SSE、websocket,接下来我们来按顺序简单了解一下。

(1)短轮询

即每隔一小段时间就发送一个请求到服务器,服务器返回最新数据然后客户端根据获得的数据来更新界面,这样就间接地实现了即时通信。这一方式的优点是简单,缺点是对服务器的压力较大,浪费带宽的流量,但通常情况下数据都是没有发生改变的。

(2)长轮询

即客户端发送一个请求到服务器,然后服务器查看客户端请求的数据(就是服务器中的数据)是否发生变化,如果发生变化,就会立即响应返回,否则保持这个链接并定期检查最新数据,直到发生了数据更新或者连接超时。因此,客户端连接一旦断开,就会再次发出请求,这样一来,在相同的时间内大大减少了客户端请求服务器的次数。这一方式有一个弊端:服务器长时间的连接会消耗资源,返回数据的顺序无法保证,管理和维护困难。

(3)SSE

即服务器推送事件,为了解决浏览器只能够单向传输数据到服务端,HTML5提供了一种新的技术叫做服务器推送事件SSE。SSE技术提供的是从服务器单向推送数据给浏览器的功能,但是配合浏览器主动请求,实际上就是实现客户端与服务器之间的双向通信。

(4)Websocket

在HTML5中,为了加强web的功能,提供了websocket技术,它不仅是一种web通信方式,也是一种应用层协议。它提供了浏览器和服务器之间原生的全双工跨域通信。通过浏览器和服务器之间所建立的websocket连接,在同一时刻能够实现客户端到服务器和服务器到客户端的数据发送。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/785625.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-24
下一篇2023-08-24

发表评论

登录后才能评论

评论列表(0条)

    保存