Cliente Node.js para un servidor socket.io

120

Tengo un servidor socket.io en ejecución y una página web coincidente con un cliente socket.io.js. Todo funciona bien.

Pero, me pregunto si es posible, en otra máquina, ejecutar una aplicación node.js separada que actuaría como cliente y se conectaría al servidor socket.io mencionado.

Predrag Stojadinović
fuente
2
¿Cómo veo la respuesta de socket.emit ()?
codecowboy
1
Ir a través de la github.com/LearnBoost/socket.io-client documentación, estoy seguro de que está ahí. Ha pasado un tiempo, así que no lo recuerdo, lo siento ...
Predrag Stojadinović
6
No funciona si io.connectse llama a la función como mencionaste. Debería llamarse como:socket = io.connect('http://localhost:1337');
ceremcem

Respuestas:

74

Eso debería ser posible usando Socket.IO-client: https://github.com/LearnBoost/socket.io-client

alessioalex
fuente
8
Uhm, podría estar equivocado, pero este parece el cliente que se ejecuta dentro del navegador. Lo que necesito es un cliente node.js independiente.
Predrag Stojadinović
No lo he comprobado recientemente, pero en el nodo 0.4.x esto también funcionó en el servidor (de hecho, lo he implementado en un proyecto anterior).
alessioalex
1
¡Me alegra que te haya funcionado! Por cierto, es mejor poner su ejemplo de trabajo en la pregunta en lugar de en una respuesta separada.
alessioalex
Esto no se instaló correctamente para mí en Windows 8 - escribí un error para ello
BT
@ PredragStojadinović: ¿Puede publicar su código? Quiero conectar un servidor NodeJS a otro. ¿Me puedes ayudar? Gracias.
Pritam
43

Añadiendo un ejemplo para la solución dada anteriormente. Utilizando socket.io-client https://github.com/socketio/socket.io-client

Lado del cliente:

//client.js
var io = require('socket.io-client');
var socket = io.connect('http://localhost:3000', {reconnect: true});

// Add a connect listener
socket.on('connect', function (socket) {
    console.log('Connected!');
});
socket.emit('CH01', 'me', 'test msg');

Lado del servidor :

//server.js
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

io.on('connection', function (socket){
   console.log('connection');

  socket.on('CH01', function (from, msg) {
    console.log('MSG', from, ' saying ', msg);
  });

});

http.listen(3000, function () {
  console.log('listening on *:3000');
});

Correr :

Abra la consola 2 y ejecute node server.jsynode client.js

AzizSM
fuente
2
¡Ejemplos asombrosos! Una cosa, en el lado del cliente, no creo que la variable "socket" se pase en el evento de conexión. Tal vez me equivoque, pero ese parece ser el comportamiento que estoy viendo con npm socket.io-client
Ryan S
8

Después de instalar socket.io-client:

npm install socket.io-client

Así es como se ve el código del cliente:

var io = require('socket.io-client'),
socket = io.connect('localhost', {
    port: 1337
});
socket.on('connect', function () { console.log("socket connected"); });
socket.emit('private message', { user: 'me', msg: 'whazzzup?' });

Gracias alessioalex .

Predrag Stojadinović
fuente
0

Sí, puede utilizar cualquier cliente siempre que sea compatible con socket.io. No importa si es nodo, java, android o swift. Todo lo que tiene que hacer es instalar el paquete de cliente de socket.io.

Suleman Tanveer
fuente