Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Websocket发送blob对象而不是字符串_Javascript_Node.js_Websocket - Fatal编程技术网

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

Javascript Websocket发送blob对象而不是字符串,javascript,node.js,websocket,Javascript,Node.js,Websocket,我可以运行Websocket,但问题是当我想发送文本时,它正在消息事件上向我发送对象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-websoc

我可以运行
Websocket
,但问题是当我想发送文本时,它正在消息
事件上向我发送对象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));

}
connection.onmessage = (message: object) => {
  console.log(JSON.parse(message['data']));
}
connection.onmessage=(e)=>{
document.getElementById(“receivedtext”).innerHTML+=(“
  • ”+e.data+“
  • ”); //接收文本 控制台日志(如数据); 控制台日志(e); var reader=新文件读取器(如数据); console.log(reader.result); //log(reader.readAsText()); console.log(reader.readAsText(e.data)); }

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

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

    服务器

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

    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));
    
    }
    
    connection.onmessage = (message: object) => {
      console.log(JSON.parse(message['data']));
    }
    

    您在哪里初始化连接服务器端?