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

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
    关注

    我也是,请问如何解决?

    评论

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码