《十》HTML5 Server-Sent Events

本文探讨了HTML5中Server-Sent Events (SSE)与WebSocket的技术特点与应用区别。SSE提供了一种轻量级的数据推送方式,适用于单向通信场景,而WebSocket则提供了全双工的通信能力,支持双向数据交换,更适用于复杂的实时交互应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HTML5 有一个 Server-Sent Events(SSE)功能,允许服务端推送数据到客户端,通常叫数据推送。当数据源有新数据,它马上发送到客户端,不需要再等待客户端请求。
在这里插入图片描述

Server-Sent Events VS Web Socket:

相同点:作用相似,都是建立浏览器与服务器之间的通信渠道。

不同点:总体来说,Web Socket 更强大和灵活。

  1. Web Socket 是全双工通道,可以双向通信,SSE 是单向通道,只能服务器向浏览器发送。
  2. Web Socket 是一个独立协议,相对复杂;SSE 使用 HTTP 协议,使用简单。
  3. SSE 默认支持断线重连;Web Socket 需要自己实现。
  4. SSE 一般只用来传送文本,二进制数据需要编码后传送;Web Socket 默认支持传送二进制数据。

判断浏览器是否支持 Server-Sent Events :

if(typeof(EventSource)!== "undefined"){
    // 浏览器支持 Server-Sent
}else{
    // 浏览器不支持 Server-Sent..
}

EventSource 对象:

EventSource 对象用于接收服务器发送的事件通知。

// 创建一个新的 EventSource 对象
var source=new EventSource(url);

EventSource 对象的属性:

  1. readyState:表明连接的当前状态,只读。

    属性值有:

    • 0:表示连接还未建立,或者断线正在重连。
    • 1:表示连接已经建立,可以接受数据。
    • 2:表示连接已断,且不会重连。

EventSource 对象的事件:

  1. open:通往服务器的连接打开时触发;
  2. message:接收到消息时触发;
  3. error:发生错误时触发;
var source=new EventSource("demo_sse.php");
source.onmessage=function(event){
    document.getElementById("result").innerHTML+=event.data;
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值