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就是最大间隔时间

posted @ 2016-11-17 10:02  FEHammer  阅读(633)  评论(0编辑  收藏  举报