Client Node.js pour un serveur socket.io

120

J'ai un serveur socket.io en cours d'exécution et une page Web correspondante avec un client socket.io.js. Tout fonctionne bien.

Mais, je me demande s'il est possible, sur une autre machine, d'exécuter une application node.js distincte qui agirait comme un client et se connecterait au serveur socket.io mentionné?

Predrag Stojadinović
la source
2
Comment afficher la réponse de socket.emit ()?
codecowboy
1
Parcourez la documentation github.com/LearnBoost/socket.io-client , je suis sûr qu'elle est là. Cela fait un moment, donc je ne me souviens pas, désolé ...
Predrag Stojadinović
6
Cela ne fonctionne pas si la io.connectfonction est appelée comme vous l'avez mentionné. Il devrait être appelé comme:socket = io.connect('http://localhost:1337');
ceremcem

Réponses:

74

Cela devrait être possible en utilisant Socket.IO-client: https://github.com/LearnBoost/socket.io-client

alessioalex
la source
8
Euh, je me trompe peut-être, mais cela ressemble au client qui s'exécute dans le navigateur. Ce dont j'ai besoin, c'est d'un client node.js autonome.
Predrag Stojadinović
Je n'ai pas vérifié récemment, mais dans Node 0.4.x, cela fonctionnait également sur le serveur (je l'ai en fait implémenté dans un projet précédent).
alessioalex
1
Je suis content que cela ait fonctionné pour vous! Btw, il est préférable de mettre votre exemple de travail sur la question plutôt que dans une réponse séparée.
alessioalex
Cela ne s'est pas installé correctement pour moi sur Windows 8 - j'ai écrit un bogue pour cela
BT
@ PredragStojadinović: Pouvez-vous s'il vous plaît poster votre code? Je souhaite connecter un serveur NodeJS à un autre. Peux-tu m'aider? Merci.
Pritam
43

Ajout d'un exemple de solution donnée précédemment. En utilisant socket.io-client https://github.com/socketio/socket.io-client

Côté 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');

Du côté serveur :

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

Courir :

Ouvrez 2 console et exécutez node server.jsetnode client.js

AzizSM
la source
2
Des exemples impressionnants! Une chose, côté client, je ne crois pas que la variable "socket" soit transmise à l'événement de connexion. Peut-être que je me trompe, mais cela semble être le comportement que je vois avec npm socket.io-client
Ryan S
8

Après avoir installé socket.io-client:

npm install socket.io-client

Voici à quoi ressemble le code 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?' });

Merci alessioalex .

Predrag Stojadinović
la source
0

Oui, vous pouvez utiliser n'importe quel client tant qu'il est pris en charge par socket.io. Peu importe si son nœud, java, android ou swift. Tout ce que vous avez à faire est d'installer le package client de socket.io.

Suleman Tanveer
la source