Несколько веб-узлов

Я пытаюсь использовать два веб-узла на одной странице. Это мой код:

var pageViewWs = new WebSocket("ws://localhost:9002/pageView");
var sessionWs = new WebSocket("ws://localhost:9002/session");

pageViewWs.onmessage = function (event) {
  alert("PageView");
};

sessionWs.onmessage = function (event) {
  alert("Session"); 
};

Появляется только предупреждение о просмотре страницы. На стороне сервера запросы/сеансы не выполняются, только для /pageView.

Теперь, если я переключаю var pageViewWs и var sessionWs вокруг, тогда вместо "PageView" отображается предупреждение сеанса. Это не потому, что они являются оповещениями, я пробовал приложить к телу и к divs, и я прошел через Firebug. Кажется, что только один WebSocket может быть создан за один раз, хотя в Firebug свойства для pageViewWs и sessionWs выглядят одинаково, за исключением их URL.

Я тестировал это только в Firefox 15.0.1. Есть ли какое-то ограничение Websocket, при котором вы можете запускать только один за раз? Или что-то не так с моим кодом?

Ответ 1

Я считаю, что вы можете создать только одно соединение WebSocket от клиента к определенному порту на хосте. Пробовали ли вы использовать обе службы на разных портах или на разных серверах? Это позволит вам определить ограничение...

Ответ 2

Я столкнулся с такой же проблемой, чтобы запускать несколько сервисов через один и тот же порт. Итак, я создал библиотеку PHP, чтобы сделать это.

Почему?

Некоторые бесплатные планы хостинг-провайдеров не позволяют вам связываться с портами или позволяют вам привязываться к одному порту. В случае CloudShift Cloud Server вы можете привязываться только к порту 8080. Таким образом, запуск нескольких служб WebSocket невозможен. В этом случае полезно Francium DiffSocket.

Вы можете запускать разные службы на одном и том же порту с помощью библиотеки PHP, называемой Francium DiffSocket.

После настройки Francium DiffSocket вы можете сделать это для использования разных сервисов:

var chatWS = new WebSocket("ws://ws.example.com:8000/?service=chat");
var gameWS = new WebSocket("ws://ws.example.com:8000/?service=game");

Например, эти службы, которые выполняются через один порт:

Ответ 3

Помимо заголовка HTTP-запроса оба запроса одинаковы. Они попадают на один и тот же сервер приложений на одном и том же порту. Это зависит от приложения на стороне сервера, чтобы обрабатывать каждое соединение по-разному на основе инициированного им HTTP-запроса.

Я сделал это в node. Вы можете сделать это вручную, но такие пакеты, как

облегчает процесс.