私はシンプルなサーバーを持っています。コマンドを送信すると、\ r \ nで区切られた応答で返信されます。Node.js TCPクライアントコマンド/レスポンス
私はクライアント上でコマンド(コールバック)メソッドを取得しようとしました。この簡略化されたコードスニペットをチェックアウト:
var net = require('net');
var Client = function() {
this.data = "";
this.stream = net.createConnection(port, host);
this.stream.on('data', function(data) {
var self = this;
this.data += data;
self.process()
};
this.process = function() {
var _terminator = /^([^\r\n]*\r\n)/;
while(results = _terminator.exec(this.data)) {
var line = results[1];
this.data = this.data.slice(line.length);
this.emit('response', data);
};
};
this.sendCommand = function(command, callback) {
var self = this;
var handler = function(data) {
self.removeListener('response', handler);
callback && callback(data);
}
this.addListener('response', handler);
this.stream.write(command);
};
this.command_1 = function(callback) {
this.sendCommand('test', callback);
};
this.command_2 = function(callback) {
this.sendCommand('test2', callback);
};
}
だから私はclient.command_1(関数(){})を実行し、その後client.command_2(関数(){})が、私のcommand_2 Iのコールバックでいますcommand_1からの応答を得ています。
このようなことを実装するのは正しい方法ですか?
あなたが構築するために正確に何をしようとしています!たくさんの素敵なノードモジュールがあります。あなたはsocket.ioのようなsthを見ましたか?チャットなどのリアルタイムのことをするのに最適なモジュールです。 – pkyeck
私は気付いていますが、このようなことを構築することに慣れています。 Socket.ioが私の頭に浮かんだ最初のものでした:) – mobius
socket.ioは、* browser *とサーバーの間の双方向通信に同じapiを持つことについてのすべてです。ブラウザの違いや、さまざまなブラウザに異なる転送を隠すためのラッパーです。 –