Je souhaite réaliser une simple connexion client-serveur en utilisant Nodejs. Mais j'ai rencontré le problème suivant.Nodejs streaming
Consultez le code
server.js:
var net = require('net'),
sys = require('sys');
net.createServer(onConnection).listen(8124);
function onConnection(socket) {
socket.setNoDelay(true);
socket.addListener("connect", function() {
sys.puts('client connected: ' + this.remoteAddress);
});
socket.addListener("data", function (data) {
sys.puts("message: \n" + data + "\n - end of msg.");
});
socket.addListener("end", function() {
sys.puts('end of connection');
this.end();
});
}
sys.puts('Server running at 127.0.0.1:8124');
Client.js:
var net = require('net'),
sys = require('sys');
var stream = net.createConnection(8124);
stream.addListener("connect", function(){
sys.puts('connected');
stream.write('a');
stream.flush();
stream.write('b');
stream.flush();
});
stream.addListener("data", function(data){
sys.puts("Message: \n" + data + "\n - end of msg.");
});
Quand je lance Client.js je suis parfois un seul message 'ab' au lieu de deux messages 'a' et 'b'.
Existe-t-il une «bonne méthode» pour gérer cela?
vous pouvez même recevoir 'ba' !! il n'y a pas de bénéficiaire pour recevoir des données dans l'ordre où vous les envoyez. –
@MortezaM. en fait TCP/IP * donne la garantie * que les données seront reçues sur la commande qui a été envoyée, donc dans ce cas ce sera toujours 'ab'. – Kornel