Ответ 1
Я считаю, что вы можете создать только одно соединение WebSocket от клиента к определенному порту на хосте. Пробовали ли вы использовать обе службы на разных портах или на разных серверах? Это позволит вам определить ограничение...
Я пытаюсь использовать два веб-узла на одной странице. Это мой код:
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, при котором вы можете запускать только один за раз? Или что-то не так с моим кодом?
Я считаю, что вы можете создать только одно соединение WebSocket от клиента к определенному порту на хосте. Пробовали ли вы использовать обе службы на разных портах или на разных серверах? Это позволит вам определить ограничение...
Я столкнулся с такой же проблемой, чтобы запускать несколько сервисов через один и тот же порт. Итак, я создал библиотеку 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");
Например, эти службы, которые выполняются через один порт:
Помимо заголовка HTTP-запроса оба запроса одинаковы. Они попадают на один и тот же сервер приложений на одном и том же порту. Это зависит от приложения на стороне сервера, чтобы обрабатывать каждое соединение по-разному на основе инициированного им HTTP-запроса.
Я сделал это в node. Вы можете сделать это вручную, но такие пакеты, как
облегчает процесс.