Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
haizhilin2013 opened this issue Apr 27, 2019 · 24 comments
Labels
软技能 软技能

Comments

@haizhilin2013
Copy link
Collaborator

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

@haizhilin2013 haizhilin2013 added the 软技能 软技能 label Apr 27, 2019
@Lucas-Lulululu
Copy link

websocket

@tzjoke
Copy link

tzjoke commented May 29, 2019

补充:SSE,EventSource接口

@tiyunchen
Copy link

http2.0 的长链接

@Damon99999
Copy link

websocket

@kokokele
Copy link

  • 一个轮训

@seho-dev
Copy link

  • 一个轮训

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

@dixinL
Copy link

dixinL commented Jul 26, 2019

  • 一个轮训

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

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

@seho-dev
Copy link

  • 一个轮训

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

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

是的,没错

@hc951221
Copy link

hc951221 commented Aug 7, 2019

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

@15190408121
Copy link

websocket

@censek
Copy link

censek commented Oct 14, 2019

补充:SSE,EventSource接口

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

@diandianzd
Copy link

  • websocket
  • SSE,EventSource接口

参考

@rennzhang
Copy link

服务端推送

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 支持,所以这个方法并不常见

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

@larry0442
Copy link

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

@blueRoach
Copy link

  • websocket
  • EventSource

@giggleCYT
Copy link

websocket

@smile-2008
Copy link

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 支持,所以这个方法并不常见

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

@xiezhenghua123
Copy link

websocket

@amikly
Copy link

amikly commented Oct 30, 2021

轮询
长轮询
HTTP流
SSE
Web Sockets

@syfine
Copy link

syfine commented Apr 13, 2022

@WangXi01
Copy link

只知道websocket

@an31742
Copy link

an31742 commented Aug 12, 2023

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 是一种轻量级的消息传输协议,适用于物联网和实时数据传输场景,也可以用于网页应用的消息推送。

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

@lili-0923
Copy link

轮询 WebSocket

@pengsir120
Copy link

websocket

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
软技能 软技能
Projects
None yet
Development

No branches or pull requests