node.js websocket发送自定义数据

我发现了一个伟大的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");