2015-01-05 3 views
2

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

Server.js локальный: 9200

io.sockets.on('connection', function(socket) { 

    socket.on('messageFromClient', function(data) { 
     socket.broadcast.to(data.chatRoom).emit('messageFromServer', data); 
    }); 

}); 

Это соединение сокет прослушивает к серверу как так

var appPort = 9200; 

var express = require('express'); 
var app  = express(); 
var http  = require('http'); 
var server = http.createServer(app); 
var io  = require('socket.io').listen(server); 

// Launch server 
server.listen(appPort); 

У меня есть веб-сайт обслуживается Node.js. .. Server.js localhost: 3000: Мне нужно это, чтобы получать и излучать события от localhost: 9200

Как настроить server.js для localhost: 3000?

+0

Я смущен, потому что мне сказали настроить сервер redis, но это кажется излишним, и я действительно не понимаю, что это значит. Я продолжаю сталкиваться с https://github.com/automattic/socket.io-client, и я думаю, что это может быть решение? –

ответ

0

Я понял это, это действительно очень просто. Могут быть два узла серверов, но только один сервер должен использовать socket.io и обрабатывать события. Все, что вам нужно сделать, чтобы подключиться, - это совместный сценарий на стороне клиента через CORS, я хотел избежать CORS, но вам нужно всего лишь разделить скрипт socket.io на CORS и ничего больше, так что это не так уж плохо.

Прежде всего необходимо разрешить другому домену доступ к скрипту через CORS.

// requires cors module I think (var cors = require('cors');) 
var corsOptions = { 
    origin: 'http://localhost:3100', 
    credentials: true 
}; 

Тогда, во-вторых, это важно на стороне клиента использовать io.connect Я не уверен, если это было амортизируется или что-то, но ни одна из современных докторов говорить об этом.

// What worked for me 
var socket = io.connect('http://localhost:3100'); 

// Docs say 
var socket = io('http://localhost:3100'); // ?? I am not sure why but io.connect worked for me. 
Смежные вопросы