node.js websocket 发送自定义数据 [英] node.js websocket send custom data

查看:38
本文介绍了node.js websocket 发送自定义数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我发现了一个很棒的 websocket 教程.如果服务器收到消息,则服务器对其进行解码并写入控制台,然后服务器将其发送回客户端.

I found a great websocket tutorial. If the server get a message, then the server decodes it, and writes to the console, and after that the server sends it back to the client.

  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');  
  }

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

It works, but I would like to send custom messages, not just what the client sent me.

推荐答案

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

I'll post it as an answer just for clarity.

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

You should change unMaskedText to a buffer representing the text you want to send, after displaying the received data but before doing calculations for the data to send. E.g.

unMaskedText = new Buffer("test");

这篇关于node.js websocket 发送自定义数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆