Клиент Node.js для сервера socket.io


120

У меня работает сервер socket.io и соответствующая веб-страница с клиентом socket.io.js. Все нормально работает.

Но мне интересно, можно ли на другом компьютере запустить отдельное приложение node.js, которое будет действовать как клиент и подключаться к упомянутому серверу socket.io?


2
Как просмотреть ответ socket.emit ()?
codecowboy 06

1
Пройдите через github.com/LearnBoost/socket.io-client документации, я уверен , что она есть. Прошло какое-то время, поэтому я не помню, извините ...
Предраг Стоядинович

6
Это не работает, если io.connectфункция вызывается, как вы упомянули. Это должно называться:socket = io.connect('http://localhost:1337');
ceremcem

Ответы:


74

Это должно быть возможно с использованием Socket.IO-client: https://github.com/LearnBoost/socket.io-client


8
Хм, я могу ошибаться, но это похоже на клиент, который работает в браузере. Мне нужен автономный клиент node.js.
Предраг Стоядинович

Я недавно не проверял, но в Node 0.4.x это тоже работало на сервере (я действительно реализовал это в прошлом проекте).
alessioalex

1
Я рад, что у вас получилось! Кстати, свой рабочий пример лучше поставить на вопрос, чем в отдельный ответ.
alessioalex

У меня это не установилось правильно на Windows 8 - я написал ошибку для этого
BT

@ PredragStojadinović: Не могли бы вы опубликовать свой код? Я хочу подключить один сервер NodeJS к другому. Можете ли вы помочь мне? Спасибо.
Pritam

43

Добавление примера для решения, приведенного ранее. Используя socket.io-client https://github.com/socketio/socket.io-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.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');
});

Бегать :

Откройте консоль 2 и запустите node server.jsиnode client.js


2
Замечательные примеры! Во-первых, на стороне клиента я не верю, что переменная «сокет» передается в событии соединения. Возможно, я ошибаюсь, но, похоже, именно такое поведение я наблюдаю с npm socket.io-client
Ryan S

8

После установки socket.io-client:

npm install socket.io-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?' });

Спасибо, alessioalex .


0

Да, вы можете использовать любой клиент, если он поддерживается socket.io. Независимо от того, является ли его node, java, android или swift. Все, что вам нужно сделать, это установить клиентский пакет socket.io.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.