Cliente Node.js para um servidor socket.io

120

Eu tenho um servidor socket.io em execução e uma página da web correspondente a um cliente socket.io.js. Tudo funciona bem.

Mas, estou me perguntando se é possível, em outra máquina, executar um aplicativo node.js separado que funcione como um cliente e se conecte ao servidor socket.io mencionado?

Predrag Stojadinović
fonte
2
Como vejo a resposta do socket.emit ()?
Codecowboy
1
Acesse a documentação do github.com/LearnBoost/socket.io-client , tenho certeza de que está lá. Já faz um tempo, então eu não me lembro, desculpe ...
Predrag Stojadinović
6
Não está funcionando se a io.connectfunção for chamada como você mencionou. Deve ser chamado como:socket = io.connect('http://localhost:1337');
ceremcem 22/11/14

Respostas:

74

Isso deve ser possível usando o Socket.IO-client: https://github.com/LearnBoost/socket.io-client

alessioalex
fonte
8
Uhm, eu posso estar enganado, mas parece o cliente que roda dentro do navegador. O que eu preciso é de um cliente node.js independente.
Predrag Stojadinović
Não verifiquei recentemente, mas no Nó 0.4.x isso também funcionou no servidor (na verdade, eu implementei isso em um projeto passado).
Alessioalex
1
Estou feliz que funcionou para você! Aliás, é melhor colocar seu exemplo de trabalho na pergunta do que em uma resposta separada.
Alessioalex 23/05
Este não foi instalado corretamente para mim no Windows 8 - i escreveu um bug para ele
BT
@ PredragStojadinović: Você pode postar seu código? Quero conectar um servidor NodeJS a outro. Você pode me ajudar? Obrigado.
Pritam
42

Adicionando exemplo para solução fornecida anteriormente. Usando socket.io-client https://github.com/socketio/socket.io-client

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

Corre :

Abra o console 2 e execute node server.jsenode client.js

AzizSM
fonte
2
Exemplos impressionantes! Uma coisa, no lado do cliente, não acredito que a variável "socket" seja passada no evento de conexão. Talvez eu esteja errado, mas que parece ser o comportamento que eu estou vendo com npm socket.io-client
Ryan S
8

Após a instalação do socket.io-client:

npm install socket.io-client

É assim que o código do cliente se parece:

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

Obrigado alessioalex .

Predrag Stojadinović
fonte
0

Sim, você pode usar qualquer cliente, desde que suportado pelo socket.io. Não importa se é seu nó, java, android ou rápido. Tudo que você precisa fazer é instalar o pacote do cliente do socket.io.

Sveman Tanveer
fonte