SSE:服务器发送事件,使用长链接进行通讯
SSE:服务器发送事件,使用长链接进行通讯
优点:
比向服务器发送请求查询数据更有效率
只能服务器向浏览器发送消息
建立在http协议之上,现有的服务器都支持
支持断线重连
支持自定义发送的数据类型
客户端的代码的结构:
1、检测是否支持 2、部署SSE 3、设定相应的回调事件
例如:
if(window.EventSource){
var source = new EventSource('http://127.0.0.1')
//必须是同一域下、协议和端口也要相同
switch(source.readyState){
case 0:
console.log('连接还未建立或者连接断线')
break;
case 1:
console.log('连接已经建立,可以接受数据')
break;
case 2:
console.log('连接已断,不会重连')
break;
}
source.onopean = function(){
console.log('连接建立,触发open事件,写相应的回调')
}
source.onmessage = function(event){
var data = event.data;//服务器传回的数据
var orogin = event.origin;//服务器的url域名部分,包含协议、域名和端口
var lastEventId = event.lastEventId;//数据的编号,由服务器端发送,如果没有编号,属性为空
}
source.onerror = function(event){
console.log('连接中断')
}
source.close()
}
数据格式:
data: message\n data: end\n\n
'\n\n'是结束符
id: id是数据标识符,标识已断数据的开头,lastEventId就是这个编号
retry: 1000 retry就是最大间隔时间