node.js websocket发送自定义数据
问题描述:
我发现了一个很棒的websocket教程。如果服务器收到消息,则服务器将其解码并写入控制台,然后服务器将其发送回客户端。node.js websocket发送自定义数据
var firstByte = data[0],
secondByte = data[1];
if(!(firstByte & 0x81)) socket.end();
if(!(secondByte & 0x80)) socket.end();
var length = secondByte & 0x7f;
if(length < 126){
var mask = data.slice(2,6);
var text = data.slice(6);
}
if(length == 126){
var mask = data.slice(4,8);
var text = data.slice(8);
}
var unMaskedText = new Buffer(text.length);
for(var i=0;i<text.length;i++){
unMaskedText[i] = text[i]^mask[i%4];
}
console.log(unMaskedText.toString());
if(unMaskedText.length > 125)
var newFrame = new Buffer(4);
else
var newFrame = new Buffer(2);
newFrame[0] = 0x81;
if(unMaskedText.length > 125){
newFrame[1] = 126;
var length = unMaskedText.length;
newFrame[2] = length >> 8;
newFrame[3] = length & 0xFF; //1111 1111
} else {
newFrame[1] = unMaskedText.length;
socket.write(newFrame, 'binary');
socket.write(unMaskedText, 'utf8');
}
它的工作原理,但我想发送自定义消息,而不仅仅是客户端发送给我。
答
为了清楚起见,我会将其作为回答发布。
在显示接收到的数据之后但在计算发送数据之前,您应该将unMaskedText
更改为表示要发送的文本的缓冲区。例如。
unMaskedText = new Buffer("test");
也许你觉得这个维基答案很有趣:http://stackoverflow.com/questions/8125507/how-can-i-send-and-receive-websocket-messages。 – pimvdb
但我在代码中修改了什么? – Uw001
看着它,为什么你不能发送比'unMaskedText'更好的东西呢?例如。在进行发送计算之前只需覆盖'unMaskedText'。 – pimvdb