vue项目使用websocket实现数据实时推送

写了一个关于工程的项目,关于工地数据的实时监控 

1.后端要先写好数据,将数据传递给前端

2.在前端页面:

$(function(){ 
 var websocket = null;
   //判断当前浏览器是否支持WebSocket
   if ('WebSocket' in window) {
       websocket = new WebSocket("ws://localhost:9999/guanXiangCamera/websocket"); // 后台给的地址
  // 这里会传递一些数据,
   }else {
       alert('当前浏览器 Not support websocket')
   }
   //连接发生错误的回调方法
   websocket.onerror = function () {
       setMessageInnerHTML("WebSocket连接发生错误");
   };
   //连接成功建立的回调方法
   websocket.onopen = function () {
       //setMessageInnerHTML("WebSocket连接成功");
   }
   //接收到消息的回调方法
   websocket.onmessage = function (event) {
       setMessageInnerHTML(event.data);
   }
   //连接关闭的回调方法
   websocket.onclose = function () {
       //setMessageInnerHTML("WebSocket连接关闭");
   }
   //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
   window.onbeforeunload = function () {
       //closeWebSocket();
   }
   //将消息显示在网页上
   function setMessageInnerHTML(innerHTML) {
       document.getElementById('message').innerHTML += innerHTML + '<br/>';
   }
   //关闭WebSocket连接
   function closeWebSocket() {
       websocket.close();
   }
   //发送消息
   function send() {
       var message = "测试一下,看能不能发!"
       websocket.send(message);
   }
}

注意:有写要求是一进去就要请求websocket返回数据的,或者是查看时再请求接口返回数据的。其实如果页面只有一个请求还好,你离开页面或者关闭时websocket接口并没有断开,这样是使页面加载数据变慢,造成不好的体验

//关闭WebSocket连接
   function closeWebSocket() { //离开时一定要关闭
       websocket.close();
   }

这样写就可以拿到数据,当然要看后台多少时间给你推送数据,这样页面上的数据就可以实时更新了。

大概的内容就是这些,如有不足欢迎补充!

 

posted @ 2019-05-16 17:04  迷茫_D  阅读(16442)  评论(0编辑  收藏  举报