как подключиться к socket.io на живом сервере, используя nodejs - PullRequest
1 голос
/ 21 февраля 2020

Уже почти неделю у меня проблемы с размещением моего node.js приложения в сети. У меня есть общий хостинг, на котором я создал поддомен (скажем, sub.domain.com), и этот поддомен указывает на директорию /home/wproj/myapp, которая содержит код моего nodejs приложения. Я вошел на сервер, используя S SH, и выполнил следующие команды точно.

cd myapp
node index.js

Теперь приложение узла запущено на порту 3000, но я не могу получить доступ к его веб-странице из браузера. поэтому я использовал .htaccess файл, который содержит следующий код.

RewriteEngine On
RewriteRule ^$ http://127.0.0.1:3000/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://127.0.0.1:3000/$1 [P,L]

Теперь я могу видеть веб-страницу на http://sub.domain.com/. Но проблема в том, что мой сервер испускает сокет, но клиент не может подключиться к этому сокету. На локальном сервере все работало отлично, я не нашел решения из сотен уже заданных вопросов, которые я посетил. В консоли браузера написано, что

Firefox can’t establish a connection to the server at ws://sub.domain.com/socket.io/?EIO=3&transport=websocket&sid=pItfylCcSBwvBrGaAAAZ.

Мой код на стороне клиента выглядит следующим образом.

const socket = io.connect("http://sub.domain.com/");

Я также попытался ввести номер порта, как этот

const socket = io.connect("http://sub.domain.com:3000/");

это тоже не сработало. Также пытался заменить 127.0.0.1:3000 на http://sub.domain.com:3000 и все еще сокет не подключается и всегда возвращает 404

Извините за длинный вопрос, но мне пришлось рассказать всю историю. Если кто-нибудь может помочь мне или указать мне правильное направление, я буду благодарен.

Спасибо.

1 Ответ

0 голосов
/ 21 февраля 2020

Вам необходимо открыть порт 3000 для входящего и исходящего трафика c. Поскольку это общий хостинг, вам нужно проверить, можете ли вы сделать это самостоятельно из панели администратора (например, cPanel), прежде чем писать заявку в службу поддержки.

Вы можете запустить эту команду grep -w 3000/tcp /etc/services, чтобы увидеть если порт отображается в списке запущенных служб.

Вы можете исследовать сетевую панель с помощью инструментов веб-разработки (Ctrl + Shit + I в вашем браузере). Если вы видите ошибку No 'Access-Control-Allow-Origin' header is present on the requested resource., вам нужно запустить сервер следующим образом: io = require('socket.io')(httpServer, {'origins': 'sub.domain.com:*'})

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