node.js websocket отправляет пользовательские данные - PullRequest
1 голос
/ 21 ноября 2011

Я нашел отличный урок по веб-сокету. Если сервер получает сообщение, сервер декодирует его и записывает в консоль, после чего сервер отправляет его обратно клиенту.

  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 Ответ

1 голос
/ 21 ноября 2011

Я опубликую это как ответ только для ясности.

Вы должны изменить unMaskedText на буфер, представляющий текст, который вы хотите отправить, после отображения полученных данных, но перед выполнением расчетов для данныхотправлять.Например,

unMaskedText = new Buffer("test");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...