socket node example javascript node.js websocket socket.io

javascript - node - Problema de Socket.IO con los caracteres de control



socket.io server (2)

Este es solo un caso donde necesita asignar dinámicamente memoria localmente. Cuando entra la secuencia, debe hacer una copia de cadena de la cadena en una secuencia asignada dinámicamente de la misma longitud. problema resuelto.

Estoy implementando una aplicación que usa websockets y una consola a la que se accede a través de Telnet. Hay una comunicación entre la conexión establecida a través de websockets y la consola. Estoy experimentando un problema extraño:

  • Si envío una cadena constante a un socket establecido cuando se ingresa algo en la consola, funciona bien.
  • Si envío una cadena recibida del ámbito de la consola Parece que abre un nuevo socket (no estoy seguro) porque en el registro de depuración lo veo y en el lado del navegador (websockets) me avisa de una nueva conexión.
  • Si envío una cadena local (en lugar de la recibida del otro ámbito) se envía correctamente. (línea comentada: client.send (mensaje))

Comparto aquí el código nodeJS, tenga en cuenta que ahora es una aplicación de prueba, por lo que solo se asume una conexión de socket y websockets:

// 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");

ACTUALIZACIÓN: Acabo de probar con socket.io 0.8.6 y nodeJS 0.4.12 sin este problema. Voy a mantener esta pregunta aquí para referencia futura.


Solucionado con socket.io v0.8.6. Esta q debe ser respondida / cerrada.