2012-05-22 26 views
106

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

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

+2

¿Cómo veo la respuesta de socket.emit()? – codecowboy

+1

Consulte la https://github.com/LearnBoost/socket.io- documentación de cliente, estoy seguro de que está allí. Ha pasado un tiempo, así que no lo recuerdo, lo siento ... –

+6

No funciona si se llama a la función 'io.connect 'como mencionaste. Se debe llamar como: 'socket = io.connect ('http: // localhost: 1337');' – ceremcem

Respuesta

65

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

+4

Uhm, podría estar confundiendo, pero esto se parece al cliente que se ejecuta dentro del navegador. Lo que necesito es un cliente node.js independiente. –

+0

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

+0

¡FUNCIONA! Gracias :) –

5

Después de instalar socket.io-cliente:

npm install socket.io-client 

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

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.

24

Añadiendo el ejemplo de solución anterior. Mediante el uso de socket.io-clienthttps://github.com/socketio/socket.io-client

del 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'); 

el 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'); 
}); 

Run:

abierto 2 de la consola y ejecutar node server.js y node client.js

+0

¡Ejemplos impresionantes! Una cosa, en el lado del cliente, no creo que la variable "socket" se pase en el evento de conexión. Tal vez estoy equivocado, pero ese parece ser el comportamiento que estoy viendo con npm socket.io-client –

Cuestiones relacionadas