Je suis la mise en œuvre d'une application qui utilise les websockets, et une console accessible via Telnet. Il y a une communication entre la connexion établie via les websockets et la console. Je suis en train de vivre une drôle de question:
- Si j'envoie une constante de chaîne à une prise quand quelque chose est entré dans la console il fonctionne ok.
- Si j'envoie une chaîne de caractères reçue à partir de la console portée, Il semble ouvrir un nouveau socket (pas sûr), parce que dans le journal de débogage je les vois et dans le navigateur côté (websockets) il me prévient d'une nouvelle connexion.
- Si j'envoie une chaîne locale (à la place de celui reçu de l'autre champ d'application), il est envoyé correctement. (a commenté la ligne: le client.send(message) )
Je partage ici la nodeJS code, de prendre en compte le fait que c'est maintenant une application de test de sorte qu'il est supposé une seule prise et websockets connexion:
// Sample based on: http://elegantcode.com/2011/05/04/taking-baby-steps-with-node-js-websockets/
// Changed for sockets.io 6.x => 7.x
var events = require('events');
var eventEmitter = new events.EventEmitter();
var http = require('http');
var socketIO = require('socket.io');
var static = require('node-static');
var port = 2000;
var clientFiles = new static.Server('./client');
var httpServer = http.createServer(
function(request, response) {
request.addListener('end', function() {
clientFiles.serve(request, response);
});
})
httpServer.listen(port);
console.log("Server running at port: " + port);
var io = require('socket.io').listen(httpServer);
var webSocket = io.sockets;
webSocket.on('connection', function(client) {
client.send('Please enter a user name ...');
var userName;
eventEmitter.on('someOccurence', function(message) {
console.log("Received: " + message);
client.send('Line Received');
var s = 'popo';
client.send(s);
//client.send(message);
});
client.on('message', function(message) {
console.log(message);
if(!userName) {
userName = message;
client.broadcast.send(message + ' has entered the zone.');
return;
}
var broadcastMessage = userName + ': ' + message;
client.broadcast.send(broadcastMessage);
client.send("Repeated here: " + message);
});
client.on('disconnect', function() {
var broadcastMessage = userName + ' has left the zone.';
client.broadcast.send(broadcastMessage);
});
});
var lines = require('lines-adapter');
var net = require('net');
var server = net.createServer(function (socket) {
socket.write("Welcome to the Server\r\n");
lines(socket, 'utf8')
.on("data",
function(line) {
console.log("Line received: " + line);
eventEmitter.emit('someOccurence', line);
}
)
.end("end",
function() {
console.log("End of Stream");
}
);
});
server.listen(1337, "127.0.0.1");
Mise à JOUR: je viens de tester avec la prise.io 0.8.6 et nodeJS 0.4.12 sans ce problème. Je vais garder cette question ici pour référence future.