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


120

У мене запущений сервер socket.io і відповідна веб-сторінка з клієнтом socket.io.js. Все працює чудово.

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


2
Як я бачу відповідь від socket.emit ()?
codecowboy

1
Перегляньте документацію на github.com/LearnBoost/socket.io-client , я впевнений, що він є.
Минув

6
Він не працює, якщо io.connectфункція викликається, як ви згадали. Це слід назвати так:socket = io.connect('http://localhost:1337');
ceremcem

Відповіді:


74

Це має бути можливо за допомогою Socket.IO-клієнта: https://github.com/LearnBoost/socket.io-client


8
Гм, я можу помилятися, але це виглядає як клієнт, який працює в браузері. Що мені потрібно - це окремий клієнт node.js.
Predrag Stojadinović

Я нещодавно не перевіряв, але в Node 0.4.x це теж працювало на сервері (я реально реалізував це в минулому проекті).
alessioalex

1
Я радий, що це працювало на тебе! До речі, краще поставити свій робочий приклад на питання, а не окрему відповідь.
alessioalex

Це не правильно встановлено для мене на Windows 8 - я написав помилку для цього
BT

@ PredragStojadinović: Чи можете ви опублікувати свій код? Я хочу підключити один NodeJS sever до іншого. Ви можете мені допомогти? Дякую.
Притам

42

Додавання в приклад рішення, поданого раніше. За допомогою 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
Дивовижні приклади! Одне, що стосується клієнта, я не вірю, що змінна "socket" передається під час події з'єднання. Можливо, я помиляюся, але це, мабуть, така поведінка, яку я бачу з npm socket.io-client
Раян 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. Незалежно від того, чи буде його вузол, java, android чи стрімкий. Все, що вам потрібно зробити - це встановити клієнтський пакет socket.io.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.