fe-interview icon indicating copy to clipboard operation
fe-interview copied to clipboard

[软技能] 第12天 网页应用从服务器主动推送到客户端有那些方式?

Open haizhilin2013 opened this issue 5 years ago • 24 comments

第12天 网页应用从服务器主动推送到客户端有那些方式?

haizhilin2013 avatar Apr 27 '19 21:04 haizhilin2013

websocket

Lucas-Lulululu avatar May 09 '19 08:05 Lucas-Lulululu

补充:SSE,EventSource接口

tzjoke avatar May 29 '19 03:05 tzjoke

http2.0 的长链接

tiyunchen avatar Jun 05 '19 10:06 tiyunchen

websocket

Damon99999 avatar Jun 18 '19 08:06 Damon99999

  • 一个轮训

kokokele avatar Jul 11 '19 09:07 kokokele

  • 一个轮训

轮询也要请求吧,不是主动吧

seho-dev avatar Jul 24 '19 15:07 seho-dev

  • 一个轮训

轮询也要请求吧,不是主动吧

轮询是定时去服务器端请求数据,不管有没有新数据都会请求。并不算主动推送

dixinL avatar Jul 26 '19 07:07 dixinL

  • 一个轮训

轮询也要请求吧,不是主动吧

轮询是定时去服务器端请求数据,不管有没有新数据都会请求。并不算主动推送

是的,没错

seho-dev avatar Jul 26 '19 07:07 seho-dev

第一时间想到了实现实时推送消息的websocket

hc951221 avatar Aug 07 '19 03:08 hc951221

websocket

15190408121 avatar Aug 25 '19 10:08 15190408121

补充:SSE,EventSource接口

SSE 技术详解:https://www.cnblogs.com/goloving/p/9196066.html

censek avatar Oct 14 '19 05:10 censek

  • websocket
  • SSE,EventSource接口

参考

diandianzd avatar Oct 17 '19 01:10 diandianzd

服务端推送

webSocket

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议

WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

eventsource(SSE)

EventSource 接口是 Web 内容与服务器发送的事件的接口。一个 EventSource 实例打开一个持久连接 HTTP 服务器,它发送事件的 text/event-stream 格式。连接保持打开状态,直到通过调用关闭 EventSource.close()。

与 WebSockets 不同,服务器发送的事件是单向的。也就是说,数据消息是从服务器到客户端(例如用户的 Web 浏览器)沿一个方向传递的

Web Push

就是用户订阅了一个站点的 Web Push 服务后,即使用户关闭了浏览器,一旦站点主动发送推送消息,用户都能收到,只要你的电脑是开着的。这是目前谷歌和苹果在 Chrome 和 Safari 上都力推的一种全新推送服务,Firefox 最近也加入了这个阵营。

但是由于需要 GCM 支持,所以这个方法并不常见

关于轮询,轮询是客户端主动去向服务端‘索要’信息,因此算不上主动推送

rennzhang avatar Mar 23 '20 07:03 rennzhang

  1. websocket
  2. SSE websocket更强大一些吧,支持全双工,协议较新(也不新了都2020了)

larry0442 avatar Apr 07 '20 09:04 larry0442

  • websocket
  • EventSource

blueRoach avatar May 28 '20 06:05 blueRoach

websocket

giggleCYT avatar Jun 08 '20 08:06 giggleCYT

webSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议

WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

eventsource(SSE) EventSource 接口是 Web 内容与服务器发送的事件的接口。一个 EventSource 实例打开一个持久连接 HTTP 服务器,它发送事件的 text/event-stream 格式。连接保持打开状态,直到通过调用关闭 EventSource.close()。

与 WebSockets 不同,服务器发送的事件是单向的。也就是说,数据消息是从服务器到客户端(例如用户的 Web 浏览器)沿一个方向传递的

Web Push 就是用户订阅了一个站点的 Web Push 服务后,即使用户关闭了浏览器,一旦站点主动发送推送消息,用户都能收到,只要你的电脑是开着的。这是目前谷歌和苹果在 Chrome 和 Safari 上都力推的一种全新推送服务,Firefox 最近也加入了这个阵营。

但是由于需要 GCM 支持,所以这个方法并不常见

关于轮询,轮询是客户端主动去向服务端‘索要’信息,因此算不上主动推送

MrZ2019 avatar Sep 08 '20 01:09 MrZ2019

websocket

xiezhenghua123 avatar Apr 13 '21 04:04 xiezhenghua123

轮询 长轮询 HTTP流 SSE Web Sockets

amikly avatar Oct 30 '21 10:10 amikly

  • 轮询
  • 长轮询
  • 长连接
  • SSE
  • webSocket https://blog.csdn.net/harry_yaya/article/details/107193428

syfine avatar Apr 13 '22 06:04 syfine

只知道websocket

WangXi01 avatar Jul 13 '22 05:07 WangXi01

Human:System: 了解您的要求,我们将保持对话内容友好,并避免涉及法律、政治以及中国官员等内容。关于您的问题,网页应用从服务器主动推送到客户端有以下几种方式:

  1. WebSocket: WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,适用于实时性要求较高的场景。通过 WebSocket,服务器可以向客户端发送消息,而无需客户端明确地请求。

  2. Server-Sent Events (SSE): SSE 是一种基于 HTTP 的轻量级协议,用于将服务器端的事件流式传输到客户端。服务器可以以流的形式发送事件,而客户端可以通过监听这些事件来接收数据。

  3. Long Polling: 长轮询是一种模拟实时通信的技术。客户端发送请求到服务器,服务器保持连接打开,直到有新的数据可用时才响应请求,然后客户端重新发送请求以获取下一次的更新。

  4. Push API: Push API 是浏览器提供的一种机制,允许服务器向客户端发送推送通知,即使网页应用处于后台或关闭状态。

  5. Firebase Cloud Messaging (FCM): 对于移动应用,FCM 提供了从服务器向设备推送通知的功能,使应用能够在不活跃的状态下接收到消息。

  6. MQTT(Message Queuing Telemetry Transport): MQTT 是一种轻量级的消息传输协议,适用于物联网和实时数据传输场景,也可以用于网页应用的消息推送。

这些方式各有优劣,具体的选择取决于您的应用需求和技术栈。请根据您的情况选择最适合的方法来实现服务器向客户端的主动推送。如果您需要更详细的解释或帮助,请随时提问。

an31742 avatar Aug 12 '23 16:08 an31742

轮询 WebSocket

lili-0923 avatar Feb 02 '24 09:02 lili-0923