代码之家  ›  专栏  ›  技术社区  ›  Muhammad Faizan Khan

Websocket发送blob对象而不是字符串

  •  1
  • Muhammad Faizan Khan  · 技术社区  · 6 年前

    我能跑起来 Websocket on message 事件,而我要发送文本。

    const WebSocket = require('ws');
    const wss = new WebSocket.Server({ port: 8080 })
    
    var sockets = [];
    
    wss.on('connection', ws => {
        //var id = ws.upgradeReq.headers['sec-websocket-key'];
        //console.log("New connection id ::", id);
        //w.send(id);
        sockets.push(ws);
        console.log("New client connected"+ ws);
    
      ws.on('message', message => {
    
        console.log(`Received message => ${message}`)
    
        //var id = ws.upgradeReq.headers['sec-websocket-key'];
        //var mes = JSON.parse(message);
    
        //sockets[message.to].send(mes.message);
         // console.log('Message on :: ', id);
        //console.log('On message :: ', message);
        sockets.forEach(w=> {
            w.send(message);
        });
      })
    
      ws.send('Welcome by server!')
    })
    

    客户端代码摘录

    connection.onmessage = (e) => {
      document.getElementById("ReceviedText").innerHTML += ("<li>" + e.data + "</li>");
    
       // ReceviedText
      console.log(e.data);
      console.log(e);
    
      var reader = new FileReader(e.data);
      console.log(reader.result);
    
      //console.log(reader.readAsText());
      console.log(reader.readAsText(e.data));
    
    }
    

    0 回复  |  直到 6 年前
        1
  •  1
  •   Tomas Vancoillie    5 年前

    我对一个对象数组也有同样的问题。通过将数据转换为JSON字符串 JSON.stringify . 在客户机上,您可以使用 JSON.parse .

    服务器

    sockets.forEach(w => {
      w.send(JSON.stringify(message));
    });
    

    顾客

    connection.onmessage = (message: object) => {
      console.log(JSON.parse(message['data']));
    }