J'ai un serveur simple, vous lui envoyez une commande, il répond en retour avec une réponse délimitée par \ r \ n. J'ai donc essayé d'obtenir une méthode de commande (callback) sur mon client. Consultez cet extrait de code simplifié:Node.js TCP Commande/réponse du client
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);
};
}
Je suis en train de faire une client.command_1 donc (function() {}), puis une client.command_2 (function() {}), mais dans le rappel de mon command_2 I Je reçois la réponse de command_1.
Est-ce la bonne façon de mettre en œuvre une telle chose?
ce que vous essayez de construire exactement ?! il y a tellement de modules de nœuds que vous pourriez utiliser ... avez-vous regardé sth comme socket.io? C'est un excellent module pour faire des choses en temps réel comme le chat etc ... – pkyeck
Je suis conscient, mais j'essaie de me familiariser avec la construction de choses comme ça. Socket.io a été la première chose qui me vient à l'esprit :) – mobius
socket.io est tout à propos d'avoir même API pour la communication bidirectionnelle entre * navigateur * et le serveur. C'est un wrapper pour cacher les différences du navigateur et différents transports accessibles aux différents navigateurs. Si vous voulez une communication de serveur à serveur, vous avez beaucoup plus de choix (WebSockets, http, rpc, xmlrpc, votre propre protocole, files d'attente de messages - vous l'appelez) –