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

时间:2018-12-21 12:01:36

标签: javascript node.js websocket

我能够以某种方式运行Websocket,但问题是在我想发送文本时,它在on message事件中向我发送了对象blob。

这是我的websocket服务器代码:

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));

}

我发现我可以使用文件阅读器将blob转换为字符串,但它返回null。

1 个答案:

答案 0 :(得分:1)

对象数组存在相同的问题。通过使用JSON.stringify将数据转换为JSON字符串来解决此问题。在客户端上,您可以使用JSON.parse获取数据。

服务器

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

客户

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