Могут ли WebSockets (или AJAX long-polling и т. Д.) Работать на порте, отличном от исходного HTTP-запроса? - PullRequest
6 голосов
/ 19 марта 2011

Я хочу написать приложение, которое использует WebSockets с node.js и socket.io в сочетании с Django и будет обмениваться данными через Redis (много модных слов в этом предложении!).

Если я запускаюузел на другом порту (например, 5555), смогу ли я подключиться к нему с помощью WebSocket (или альтернативного метода с socket.io , например, с длинным опросом и т. д.) или будет та же политика происхождения доставить мне проблемы?

Если так, как я могу их обойти?

Ответы [ 4 ]

5 голосов
/ 19 марта 2011

Socket.io поддерживает опрос JSONP, который обычно используется для длинных междоменных опросов (кроме CORS , который поддерживается не каждым браузером). По междоменной теме, касающейся WebSockets - спецификация гласит следующее:

Сервер включает имя хоста в | Sec-WebSocket-Location | поле его рукопожатие, так что оба клиент и сервер могут проверить что они согласны с тем, какой хост находится в использовать.

Вы «должны» иметь возможность использовать WebSockets с другим портом, фактически у вас, вероятно, нет другого выбора, поскольку стандартные порты, такие как 80, будут использоваться другим веб-сервером для обслуживания вашего приложения на основе Django. Будут также потенциальные проблемы с браузером ограничения параллельного соединения , если вы используете один и тот же домен и порт (например, вы можете увидеть это в чате Facebook, когда вы пытаетесь открыть более одной вкладки в одном контексте браузера). - каждая вкладка подключается к отдельному поддомену во время длительного опроса для преодоления этих ограничений).

3 голосов
/ 20 марта 2011

Ответ «иногда».Он очень специфичен для браузера и политики безопасности.

Предполагается, что вы используете Socket.IO ... У меня не было проблем, за исключением Opera, где он не мог обойти SOP (политика того же источника)правила.Исправление включало WebSockets.

2 голосов
/ 19 марта 2011

socket.io поддерживает междоменные соединения (см. FAQ). Другой порт будет работать нормально.

1 голос
/ 19 марта 2011

Я не уверен насчет WebSockets, хотя Ajax создаст вам проблемы с этим. Я считаю, что это может быть решено с помощью обратного прокси-сервера на стороне, хотя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...