Уже почти неделю у меня проблемы с размещением моего 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
Извините за длинный вопрос, но мне пришлось рассказать всю историю. Если кто-нибудь может помочь мне или указать мне правильное направление, я буду благодарен.
Спасибо.