Websocket的使用

导论:以前没用过Websocket的,现在需求用到了才了解到这是一种服务器主动发送数据给客户端的方法,与客户端主动请求的ajax异曲同工。但是Websocket的官方文档提供的参考信息极少,像极了之前我做过的Echarts-X,可能是使用的人少吧。

1、新建一个websocket

let ws = new WebSocket('ws://xxx.xxx.xxx:8000');

2、建立连接(订阅thingsboard为例)

需要请求的参数为一个时,直接传入字符串;为多个时,以逗号分隔。tsSubCmds是获取实时的数据,historyCmds是获取历史数据,需要注意是,历史数据和最新返回的一条实时数据返回的先后顺序是不固定的!所以,需要手动判断一下,看数据返回的长度。

   ws.onopen = function () {
      var object = {
        tsSubCmds: [{
          entityType: "DEVICE",
          entityId: "123456",
          keys: "aa,bb,cc,dd",
          scope: "LATEST_TELEMETRY",
          cmdId: 25
        }],
        historyCmds: [{
          entityType: "DEVICE",
          entityId: "123456",
          keys: "aa",
          startTs: 1521700888000, // 开始时间
          endTs: 1521702888000, // 结束时间
          interval: 1000, // 时间间隔
          limit: 100, // 限制条数
          agg: "AVG"
        }]
        attrSubCmds: []
      };
      dataSend = JSON.stringify(object);
      ws.send(dataSend);
    };

3、拿到数据,进行处理

ws.onmessage = function (event) {
  var data = $.parseJSON(event.data).data;
}

4、关闭连接

ws.close()

如果页面上,需要切换设备去动态的获取数据,记得切换设备的时候,把前一个开好的连接关掉,再新开连接,否则之前的连接会跟定时器一样一直存在,会影响性能,甚至导致浏览器崩溃。

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它可以让客户端和服务器之间进行实时通信。在使用 WebSocket 时,客户端和服务器之间会建立一个长连接,这样客户端就可以向服务器发送数据,并从服务器接收数据。相比于传统的 HTTP 请求,WebSocket 的优势是可以实现实时通信,而且不需要频繁地发起请求和响应。 下面是使用 WebSocket 的基本步骤: 1. 客户端向服务器发起 WebSocket 连接请求。 2. 服务器接收到 WebSocket 连接请求,并建立连接。 3. 客户端和服务器之间进行实时通信。 4. 当通信结束时,客户端和服务器都可以关闭连接。 在 JavaScript 中,可以使用 WebSocket 对象来实现 WebSocket 通信。以下是一个简单的 WebSocket 示例: ```javascript // 创建 WebSocket 对象 var ws = new WebSocket('ws://localhost:8080'); // 监听连接事件 ws.onopen = function() { console.log('WebSocket 已连接'); }; // 监听消息事件 ws.onmessage = function(evt) { console.log('收到消息:' + evt.data); }; // 发送消息 ws.send('Hello, WebSocket!'); // 关闭连接 ws.close(); ``` 在上面的示例中,我们首先创建了一个 WebSocket 对象,然后监听了连接事件和消息事件。当连接建立成功时,会触发 onopen 事件;当收到消息时,会触发 onmessage 事件。我们还可以使用 send 方法向服务器发送消息,使用 close 方法关闭连接。 在服务器端,也可以使用 WebSocket 对象来实现 WebSocket 通信。具体实现方式可以参考各种编程语言的 WebSocket 库和示例代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值