猫丞丞和兔飞飞~ 2019-03-13 14:37 采纳率: 0%
浏览 9247

websocket连接成功建立以后前台的onmessage不会自动触发,为什么?

前端:vue
后台:node

如题,websocket已经成功连接,readystate状态码是1(已建立连接可通讯的意思),后台向前台推送的数据其实是可以接收到的,但是只能靠我手动刷新页面,他才会调用一次onmessage回调方法,没有办法实时接收到数据,这是为啥,求大神指点QAQ

前端代码:

// 建立通讯
    initWebSocket () {
        var that = this
        ws = new WebSocket('ws://localhost:8081')
        ws.onopen = function () {
          that.socketOpen()
        }
        ws.onmessage = function (data) {
          that.socketMsg(data)
        }
        ws.onclose = function (e) {
          that.socketClose(e)
        }
        ws.onerror = function (err) {
          console.log(err)
        }
    },
    socketMsg (data) {
        console.log(JSON.parse(data.data))
    }

node后台(设置定时器,查表后定时向前台推送):

var WebSocketServer = require('ws').Server,
    wss = new WebSocketServer({ port: 8081 });
wss.on('connection', function (ws) {
    console.log('client connected');
    saleRecord();
});

var time = setTimeout(saleRecord, 5000);
function saleRecord () {
    db.select(connection, sql, function (res) {
       // ...
       wss.on('connection', function (ws) {
          // ...
          ws.send(JSON.stringify(data));
       });
    });
    clearTimeout(time);
    setTimeout(saleRecord, 5000);
}
  • 写回答

4条回答 默认 最新

  • 陆之沂 2023-03-23 15:29
    关注

    我也是,请问如何解决?

    评论

报告相同问题?

悬赏问题

  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)