我能够以某种方式运行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。
答案 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']));
}