说明

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