2012-05-22 2 views
106

Ho un server socket.io in esecuzione e una pagina Web corrispondente con un client socket.io.js. Tutto funziona bene.Client Node.js per un server socket.io

Ma, mi chiedo se sia possibile, su un'altra macchina, eseguire un'applicazione node.js separata che agirà da client e si connetterà al server socket.io menzionato?

+2

Come faccio a visualizzare la risposta da socket.emit()? – codecowboy

+1

Passare attraverso la documentazione https://github.com/LearnBoost/socket.io-client, sono sicuro che è lì. È passato un po 'di tempo, quindi non ricordo, scusa ... –

+6

Non funziona se la funzione 'io.connect' viene chiamata come hai detto tu. Dovrebbe essere chiamato come: 'socket = io.connect ('http: // localhost: 1337');' – ceremcem

risposta

65

che dovrebbe essere possibile utilizzando Socket.IO-client: https://github.com/LearnBoost/socket.io-client

+4

Uhm, potrei sbagliarmi, ma questo sembra il client che gira all'interno del browser. Quello di cui ho bisogno è un client node.js autonomo. –

+0

Non ho controllato di recente, ma nel nodo 0.4.x questo ha funzionato anche sul server (l'ho effettivamente implementato in un progetto passato). – alessioalex

+0

FUNZIONA! Grazie :) –

5

Dopo aver installato socket.io-client:

npm install socket.io-client 

Questo è come il codice del client si presenta come:

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

Grazie alessioalex.

24

Aggiunta nell'esempio per la soluzione fornita in precedenza. Utilizzando socket.io-clienthttps://github.com/socketio/socket.io-client

lato client:

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

Server Side:

//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:

Aprire 2 console ed eseguire node server.js e node client.js

+0

Esempi impressionanti! Una cosa, dal lato del cliente, non credo che la variabile "socket" venga trasmessa sull'evento di connessione. Forse ho torto, ma questo sembra essere il comportamento che sto vedendo con npm socket.io-client –