Не можем запустить socket.io на боевом сервере

Здравствуйте. Написал чат на сокет.ио, на локалке работает, на боевом не соединяется, пишет
GET http://test.webkey.net.ua/socket.io/?EIO=3&transport=polling&t=Lo3OqJD 404 (Not Found)

Как сделать, чтоб работало, подскажите, пожалуйста, у меня уже извилины послипались :)

Серверный код (кусочек))

app = express(),
http = require(“http”),
server = http.createServer(app),
io = require(“socket.io”).listen(server, {});

server.listen(3333, function() {
console.log(“Слушаю 3333-й порт…”);
});

На клиенте подключаюсь
$(document).ready(function() {
var socket = io.connect(“http://localhost:3333”)

Похоже, проблема на сервере, только где, вот вопрос… (((

До конца не уверен, и представляю картинку так.

Вижу у вас на сервере стоит apache. Вижу из кода что nodejs отвечает за некоторые ответы статическими файлами server = http.createServer(app),. Дело в том что ожидается что запрос http://test.webkey.net.ua/socket.io/?EIO=3&transport=polling&t=Lo3OqJD будет обрабатываться nodejs -ом, а обрабатывается apach-ем.

Для решения задачи надо настроить apache так чтобы он передавал на обработку этот запрос nodejs-у. Не факт что это единственный запрос, который надо будет из апача перенаправлять в ноду.

1 лайк

Хотя бы это как-то решить, по localhost не хочет коннектиться почему-то… И по айпи не срабатывает… О горе… (( И как с этим бороться, не представляю даже. По ходу дела сайт будет на php, нужно только переписку сделать чтобы нода её как-то ловила…

Это описание не дает никакой информации о том что происходит. Сформулируй вопрос по шаблону

  • что надо сделать
  • что делаешь
  • что ожидаешь увидеть
  • что видишь

и постарайся не добавлять свою интерпретацию происходящего где можешь.

2 лайка

Надо сделать чат, переписку в реальном времени
Делаю всё что могу
Ожидаю рабочее приложение
Вижу что нет соединения с localhost:3333

И по айпи адресу вместо localhost тоже нет соединения с нодой. На локалке работает, на боевом сервере не хочет

localhost - это адрес той машины, которой непосредственно сидите.
Если клиент находится на другой машине, нежели сервер строкой var socket = io.connect(“http://localhost:3333”) вы к нему не подключитесь.

Нужно так var socket = io.connect(“http://ip сервера:3333”)
На роутере придется пробросить 3333 порт до вашего сервера. Если стучитесь не из локальной сети, то нужен будет динамический ip(для теста сойдет и обычный, если роутер не перезагружать).

1 лайк

Я же выше писал, по айпи тоже не получается, и делал и роутер вроде друг на своём сервере. Короче, переписал я всё это дело на ws, работает без проблем. ИО - тупой ишак :D