Как разместить серверы socket.io и http в разных процессах, используя один и тот же хост и порт? - PullRequest
0 голосов
/ 06 февраля 2012

Большинство примеров в Интернете предлагают что-то вроде этого:

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

app.listen(80);

, который требует, чтобы http и сервер сокетов находились в одном процессе.

Если кто-то создает веб-сайт определенного размера, он может захотеть разделить два сервера, но при этом они должны использовать те же домены и порты. Как можно это сделать?

1 Ответ

0 голосов
/ 07 февраля 2012

Во-первых, позвольте мне помочь прояснить ваш вопрос.

То, что вы хотели бы сделать, это иметь как веб-сервер NodeHTTP, так и клиент SocketIO, работающие на разных компьютерах, но доступ к которым по-прежнему возможен через один домен (неподдомен)

Это будет очень сложно и сложно, вам потребуется несколько IP-адресов для этого ящика и haproxy для сопоставления запросов соответственно

Если это балансировка нагрузки, вам нужно прочитать о моемстек:

У меня есть несколько серверов (5 в факте), которые сбалансированы по нагрузке с помощью циклического перебора, поэтому у меня это есть в моих записях DNS

relay.domain.com: {
    A : 10.0.0.1,
    A : 10.0.0.2,
    A : 10.0.0.3,
    A : 10.0.0.4
}

У меня также есть мастерсервер, расположенный по адресу master.domain.com (10.0.0.0) , все соединения от моих клиентов socket.io устанавливаются на relay.domain.com , а соединения сбалансированы по нагрузке.серверы.

каждый из 4 серверов перечисляет соединения для порта 80, но все они создают socket.io-client соединение с главным сервером и отправляют все запросы на главный,Затем master обрабатывает данные сокета, и, если его данные будут объявлены, мы отправляем эти данные обратно на все серверы ретрансляции, которые, в свою очередь, объявляют списки клиентов.

...