NodeJs net.Socket()事件未触发

时间:2014-06-04 20:00:27

标签: node.js sockets tcp

尝试在Node v0.10.15中编写TCP客户端,我在从服务器获取数据时遇到一些麻烦。我知道服务器工作正常,因为我有3-4种用不同语言编写的不同客户端与之通信。

下面是一段更大的代码片段,但这应该是重点。 问题是:我希望在写入套接字后返回2个数据包(此部分未包含在此示例中)。我只看到了"数据"事件被解雇一次。为了让节点从Tcp流中恢复读取,我需要做些什么吗?我可以确认服务器正在发送2个数据包(长度然后是实际数据)任何帮助都将不胜感激。

var dc = require('./DataContracts.js');
var net = require('net');
require('buffertools').extend();
var client = net.Socket();
var isConnected = false;
var serverHost = '10.2.2.21';

var dataCallback;
var receivedBuffer = new Array();

function InitComm(buffer) {

    if (!isConnected) {
        client.connect(4987, serverHost, function() {

            client.on('data', function(data) {

                console.log('Received server packet...');
                var buf = new Buffer(data);
                receivedBuffer.push(buf);

                client.resume();

            });

            client.on('end', function() {
                if (receivedBuffer.length > 1) {
                    if (dataCallback !== undefined)
                        dataCallback(receivedBuffer);
                }
            });

            client.on('close', function() {
                //clean up 
            });

            client.on('error', function(err) {
                console.log('Error!: ' + err);
            });

            Communicate(buffer);

        });
    } else {
        Communicate(buffer);
    }
}

1 个答案:

答案 0 :(得分:0)

原来,该节点正在将两个数据包组合在一起。我必须错过第一个数据包的回车