说明
WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。在这里介绍如何接收到物联中台的推送信息。
WebSocket示例
从请求接口WebSocket数据推送参考请求参数信息。
<script>
// ws通信,
doids = ["4fb7","88c5","c6fa"]
device_oids = ["3e930d57","7cfc47bf"]
jwt = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6InRlc3QiLCJleHAiOjE2MzY3ODkyOTMsImVtYWlsIjoidGVzdEBxcS5jb20ifQ.s2L9un7VPSD2k7L-NFGXwDvNXfhC7WfKt9AFH0CLRoE"
var sec = 10;
var timerId = null;
// 重连次数, 1次等待10秒,总耗时10分钟
var n = 1;
function ws_connect() {
function clearTimer() {
if(timerId) {
window.clearTimeout(timerId)
timerId = null
}
}
function setTimer() {
if(n<=60){
clearTimer()
console.log('websocket' + "链接断开,10s后将尝试重链" + "第" + n + "次")
n = n + 1
timerId = setTimeout(ws_connect, sec*1000);
}else{
console.log('websocket' + "链接断开,重试关闭")
}
}
if(window.s){
window.s.close()
}
// WebSocket 对象作为一个构造函数,用于新建 WebSocket 实例
var socket = new WebSocket("ws://"+"sys.aiotos.net"+"/ws/data_info/?doids="+doids.join(",")+"&device_oids="+device_oids.join(",")+"&jwt="+jwt);
// onopen连接成功后的回调函数
socket.onopen=function(){
console.log('websocket conneted!')
n = 1
data_info = []
socket.send(JSON.stringify({"type": "first", "data_info": data_info}))
};
// onmessage收到服务器数据后的回调函数
socket.onmessage=function(event){
data = JSON.parse(event.data)
console.log("999900000",data)
};
// onclose连接关闭后的回调函数
socket.onclose=function(){
error_toastr("通信已断开")
setTimer()
};
// readyState属性返回实例对象的当前状态,OPEN表示连接成功保持连接
if(socket.readState === WebSocket.OPEN){
socket.onopen()
}
window.s = socket;
}
});
</script>
作者:admin 创建时间:2021-11-11 11:42
最后编辑:IOTOS 更新时间:2023-11-29 09:38
最后编辑:IOTOS 更新时间:2023-11-29 09:38