关于Websocket先创建连接,后注册事件,不会漏掉消息吗?

    let socket = new WebSocket('ws://echo.websocket.org/')

    socket.addEventListener('open', e => {

      console.log('open')

    })

    socket.addEventListener('message', e => {

      console.log(e.data)

    })

一直有个疑问:先创建连接,后注册事件,不会漏掉消息吗?

白板的微信
浏览 1088回答 1
1回答

米琪卡哇伊

在本地直接搭了一个用ws搭了个简易websocket服务器,然后尝试的结果是,是会丢失的。server.jsvar WebSocketServer = require('ws').Server,wss = new WebSocketServer({ port: 8181 });wss.on('connection', function (ws) {    console.log('client connected');    ws.on('message', function (message) {        console.log(message);        if (ws.readyState == 1) {                ws.send('JSON.stringify(stocksObj)');//        }    });});客户端js用了setTimeout模拟了一下。只有在绑定了监听事件之后才能正常接收到信息。var ws = new WebSocket("ws://localhost:8181");setTimeout(function(){    ws.onopen = function (e) {        console.log('Connection to server opened');    }ws.onmessage = function (e) {  console.log(e.data)}    },3000)function sendMessage() {    ws.send(123);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript