簡體   English   中英

node.js websocket發送自定義數據

[英]node.js websocket send custom data

我找到了一個很棒的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");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM