需求:
制作前台大屏幕,当卡种变化、有新的购卡信息或任务完成信息时,需要实时刷新数据。需要用到websocket进行实时通信。
主要代码
引用im.js
<script src="/assets/newugo/pc/basis/script/GoBelieveIO/im.js"></script>
定义observer对象
var observer={
handlePeerMessage: function (msg) { // 接受到一条im消息
var listData = JSON.parse(msg.content)
//收到消息后的回调函数
},
handleMessageACK: function (msgLocalID, receiver) { // 服务器对收到消息的ack,此时这条消息才能标志为发送成功
console.log(2, "message ack local id:", msgLocalID, " receiver:", receiver)
},
handleMessageFailure: function (msgLocalID, receiver) { // 消息发出后,未收到服务器的ack,在和服务器的连接断开后,会通知消息发送失败。
console.log(3, "message fail local id:", msgLocalID, " receiver:", receiver)
},
onConnectState: function (state) { // 连接状态变更通知
if (state == IMService.STATE_CONNECTED) { // 连接中
console.log(4, "im connected");
} else if (state == IMService.STATE_CONNECTING) { // 连接
console.log(5, "im connecting");
} else if (state == IMService.STATE_CONNECTFAIL) { // 连接失败
console.log(6, "im connect fail");
} else if (state == IMService.STATE_UNCONNECTED) { // 未连接的
console.log(7, "im unconnected");
}
},
onReset: function () {
console.log(8, "reset");
}
}
配置以及实例化对象
if(!im){
im = new IMService(observer);
}
im.accessToken = imData.token; //token
im.host = imData.host; //通信服务器
im.device_id = imData.device_id; //device_id
im.port = imData.port; //端口号(一般情况ws:80 wss:443)
im.observer = observer; //定义的observer对象
im.start() //启动websocket