Я использую сервис под названием glitch.me для размещения моего Node.js проекта, и они позволяют вам открыть только один порт внутри страны. На данный момент мой Node.js сервер может обрабатывать только HTTP-запросы, но glitch.me предоставляет мне трафик c, что позволяет клиенту косвенно обмениваться данными с использованием HTTPS. Мой проект в значительной степени опирается на использование WebSockets, и они отлично работают при прямом доступе к нему через example.glitch.me (URL-адрес, предоставленный glitch.me). Однако мне нужно подключить этот проект к моему пользовательскому домену (example.xyz), весь трафик c которого передается через Cloudflare. Однако при попытке установить sh соединение WebSocket через мой пользовательский домен (другими словами: через Cloudflare) соединение с сокетом никогда не устанавливается.
Теперь я понимаю, что это звучит очень точно c , но я думаю, что можно обобщить здесь:
Работа WebSockets:
- client => glitch.me => мой бэкэнд
- client => A => мой бэкэнд
Веб-сокеты не работают :
- client => cloudflare => glitch.me => мой бэкэнд
- client => A => B => мой бэкэнд
Примечание: HTTP / HTTPS по-прежнему работает для обоих доменов.
Я добавлял логирование на стороне сервера каждый раз, когда устанавливалось соединение через WebSocket, и, конечно же, сервер получает соединения! Однако клиент никогда не уведомляется, и в Chrome инструментах разработчика это показывает, что запрос никогда не завершается. Помните, что все работает отлично, когда трафик c не маршрутизируется через Cloudflare.
Я полностью понимаю, что для вас может оказаться невозможным решить мою проблему с помощью предоставленной вам информации, но Я не прошу вас сделать это. У меня вопрос просто такой: откуда проблема l ie? Ответ от моего бэкэнда застревает где-то по пути и не доходит до конца? Я связался и с glitch.me, и с Cloudflare, и они оба подтвердили, что они полностью поддерживают WebSocket traffi c.
Какая наиболее вероятная причина моей проблемы? Оттуда я, вероятно, смогу это исправить!
Редактировать: я использую пакет ws на npm на бэкэнде и стандартные JavaScript WebSockets на веб-интерфейсе.