Client Node.js per un server socket.io


120

Ho un server socket.io in esecuzione e una pagina web corrispondente con un client socket.io.js. Tutto funziona bene.

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


2
Come si visualizza la risposta da socket.emit ()?
codecowboy

1
Passa attraverso la documentazione github.com/LearnBoost/socket.io-client , sono sicuro che sia lì. È passato un po 'di tempo, quindi non ricordo, scusa ...
Predrag Stojadinović

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

Risposte:


74

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


8
Uhm, potrei sbagliarmi, ma questo sembra il client che viene eseguito nel browser. Quello di cui ho bisogno è un client node.js autonomo.
Predrag Stojadinović

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

1
Sono contento che abbia funzionato per te! A proposito, è meglio mettere il tuo esempio di lavoro sulla domanda piuttosto che in una risposta separata.
alessioalex

Questo non è stato installato correttamente su Windows 8 - ho scritto un bug per questo
BT

@ PredragStojadinović: puoi inserire il tuo codice? Voglio collegare un server NodeJS a un altro. Puoi darmi una mano? Grazie.
Pritam

43

Aggiungendo un esempio per la soluzione data in precedenza. Utilizzando socket.io-client https://github.com/socketio/socket.io-client

Dalla parte 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');

Lato server :

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

Correre :

Apri 2 console ed esegui node server.jsenode client.js


2
Esempi fantastici! Una cosa, sul lato client, non credo che la variabile "socket" venga passata all'evento di connessione. Forse mi sbaglio, ma sembra essere il comportamento che vedo con npm socket.io-client
Ryan S

8

Dopo aver installato socket.io-client:

npm install socket.io-client

Ecco come appare il codice client:

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 .


0

Sì, puoi utilizzare qualsiasi client purché supportato da socket.io. Non importa se il suo nodo, java, android o swift. Tutto quello che devi fare è installare il pacchetto client di socket.io.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.