node.js websocket发送自定义数据

时间:2011-11-21 16:19:20

标签: javascript 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');  
  }

它有效,但我想发送自定义消息,而不仅仅是客户发送给我的消息。

1 个答案:

答案 0 :(得分:1)

为了清楚起见,我会将其作为答案发布。

在显示接收的数据之后但在计算要发送的数据之前,您应该将unMaskedText更改为表示您要发送的文本的缓冲区。 E.g。

unMaskedText = new Buffer("test");