SSE:服务器发送事件,使用长连接进行通信浏览器
优势:服务器
比向服务器发送请求查询数据更有效率
只能服务器向浏览器发送消息
创建在http协议之上,现有的服务器都支持
支持断线重连
支持自定义发送的数据类型
客户端的代码的结构:url
一、检测是否支持 二、部署SSE 三、设定相应的回调事件code
例如:事件
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()
}
数据格式:get
data: message\n data: end\n\n域名
'\n\n'是结束符
id: id是数据标识符,标识已断数据的开头,lastEventId就是这个编号
retry: 1000 retry就是最大间隔时间it