Muh*_*han 7 javascript websocket node.js
我以某种方式能够运行,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!')
})
Run Code Online (Sandbox Code Playgroud)
客户端代码摘录
connection.onmessage = (e) => {
document.getElementById("ReceivedText").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));
}
Run Code Online (Sandbox Code Playgroud)
我发现我可以使用文件读取器将 blob 转换为字符串,但它返回 null。
小智 6
我也面临同样的问题。我可以通过在 Server 中添加{binary:isBinary}来修复它。
这是我的代码:-
wss.on('connection', function connection(ws) {
ws.on('message', function incoming(data,isBinary) {
wss.clients.forEach(function each(client) {
if (client !== ws && client.readyState === WebSocket.OPEN) {
client.send(data, { binary: isBinary });
}
})
})
})
Run Code Online (Sandbox Code Playgroud)
我对对象数组也有同样的问题。通过将数据转换为 JSON 字符串来修复此问题JSON.stringify。在客户端,您可以通过 获取数据JSON.parse。
服务器
sockets.forEach(w => {
w.send(JSON.stringify(message));
});
Run Code Online (Sandbox Code Playgroud)
客户
connection.onmessage = (message: object) => {
console.log(JSON.parse(message['data']));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12789 次 |
| 最近记录: |