解构/解码像Google Chrome一样的Websocket框架

时间:2014-06-24 02:18:48

标签: javascript node.js websocket

我通过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 中的例子/答案,因为这是编程我用来连接服务器的语言。

0 个答案:

没有答案