我通过websocket connection (客户端到服务器)连接到一个网站,我知道如何编码数据并将其写入服务器(使用net
node.js中的模块但当我正在读取数据时,我在重要数据前面得到了奇怪的字符,就像我想要得到的那样:
// Data needed on the left and data I'm receiving from websocket on the right
'inited\r\n' -> '�inited\r\n'
'n:2\r\n' -> '�n:2\r\n'
这就是我从服务器获取数据的方式
Klass.prototype.connect = function(){
// this.port is equal to 8080 and the exact server varys, but it's not that important anyways since the problem is decoding the data properly.
var that = this;
var buffer = "";
this.socket = new net.createConnection(this.port, this.server);
this.socket
.on("connect", function(){
that.sendHandshake(); // just sends a standard client to server handshake
})
.on("data", function(recv){
// .split('\r\n\r\n').join('\r\n') needed to separate the server handshake from the data I am trying to parse
buffer += recv.toString('utf-8').split('\r\n\r\n').join('\r\n');
while (buffer){
var offset = buffer.indexOf('\r\n');
if (offset < 0)
return;
var msg = buffer.slice(0, offset);
// parseMsg(msg)
buffer = buffer.slice(offset + 3);
}
});
};
我可能在上面的代码中做了很多不正确的事情,但我不太确定如何做到这一点,这是我现在最好的。
问题是我不知道如何删除神秘/特殊字符。有时只有1个神秘/特殊字符,但有时根据数据有多个,但它们永远不会在我需要检查的重要数据之后。
当我使用谷歌浏览器并通过工具 - > JavaScript控制台 - &gt;网络选项卡查看数据时,找到我正在寻找Google的websocket流正确解析它。我知道自从谷歌Chrome显示正确的帧以来,我该如何解构/解码数据,以便在终端上查看正确的帧?
我并不是真的需要它在特定的语言中,只要它能够工作我应该能够移植它,但我更喜欢 node.js 中的例子/答案,因为这是编程我用来连接服务器的语言。