Является ли соединение через веб-сокет в javascript входящим соединением?

Я пытаюсь установить соединение через веб-сокет на моем веб-сервере. Соединение запускается с клиента в javascript и подключается к php-скрипту на веб-сервере. Javascript также размещается на веб-сервере, но запускается из клиентского веб-браузера.

Проблема в том, что hostgator не разрешает входящие сокетные соединения, если вы не покупаете выделенный сервер, но я не знаю, считается ли это входящим сокетным соединением.

Так кто-нибудь знает, считается ли это входящим подключением к сокету или любым другим веб-хостингом, который разрешает входящие подключения?

Заранее спасибо:)

1 ответ

Решение

Соединение websocket начинает свою жизнь как входящее соединение HTTP (обычно на том же порту, который используется для веб-запросов) с некоторыми настраиваемыми заголовками, которые должны быть настроены для приема всеми веб-серверами (иначе они не будут использовать в качестве веб-сервера). После краткого обмена с клиентом клиент запрашивает обновление и переключение на протокол веб-сокета (первоначальное соединение было протоколом HTTP). То соединение, которое начало жизнь как соединение HTTP, затем становится соединением webSocket (если веб-сервер соглашается на переключение протокола).

Итак, да, это входящее соединение с веб-сервером, но это входящее HTTP-соединение, которое ваш веб-сервер уже должен принять. webSockets были разработаны таким образом, чтобы сделать их полностью совместимыми с существующей сетевой инфраструктурой HTTP, брандмауэрами и т. д., поэтому их можно использовать только путем обновления программного обеспечения сервера HTTP (для поддержки протокола webSocket) и без изменения какой-либо сети инфраструктуры.


К вашему сведению, при использовании webSockets существуют другие проблемы с хостингом. WebSocket - это непрерывное и продолжительное соединение с сокетами. Чтобы использовать его, обычно требуется непрерывный и длительный процесс на сервере. Многие из недорогих сред общего хостинга не поддерживают это. Они, как правило, принимают входящий HTTP-запрос, отправляют его любому скрипту, который он должен запустить (например, PHP-скрипту), позволяют ему выполняться по этому запросу, и затем скрипт завершается, и ваш серверный процесс не продолжает работать. Это хорошо работает для недорогого общего хостинга, поскольку ваше приложение не потребляет ресурсы сервера, когда оно не активно находится на середине обслуживания страницы. Но эта модель не будет работать для веб-сокетов, где у вас должен быть непрерывный процесс сервера для подключения к веб-сокету.

Я не знаю конкретно о hostgator, но это еще одна проблема, чтобы рассмотреть. На моем общем хостинге на Dreamhost у меня не может быть долго работающего серверного процесса. На Dreamhost это требует плана хостинга VPS, и из того, что я читал, это распространено и на другие среды общего хостинга.

Другие вопросы по тегам