Socket.io, сервер не отвечает на событие подключения

У меня есть управляемый сервер в облаках. Я пытаюсь использовать socket.io.

client.php:

var socket = io('http://localhost:3000');
console.log(socket);

server.js:

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);

server.listen(3000);

io.on('connection', function(socket){
console.log('is connected');
});

При посещении страницы я вижу два экземпляра 200 OK в сетевом разделе консоли. Консоль в браузере также печатает переменную сокета, которая имеет "connected: true".

Тем не менее, я не вижу "подключен" в терминале (из server.js), это просто пусто.

Этот сайт работал локально, но эти проблемы появляются при попытке заставить его работать в Cloudways.

Есть идеи?

Я попытался переключить "localhost" как на доменное имя, так и на IP-адрес, и я пробовал разные порты, но 3000 - единственный, который позволяет мне запускать server.js без ошибок.

РЕДАКТИРОВАТЬ

Cloudways подтвердили, что следует использовать порт 3000.

Я попытался изменить URL-адрес в IO () на:

var socket = io('http://my-cloudways-url:3000'); (net::ERR_EMPTY_RESPONSE)
var socket = io('http://www.my-domain.club:3000'); (net::ERR_EMPTY_RESPONSE)
var socket = io('http://ip-adr:3000'); (net::ERR_EMPTY_RESPONSE)

И сегодня я получаю

var socket = io('http://localhost:3000'); (net::ERR_CONNECTION_REFUSED)

Я также попробовал io.connect(используя те же адреса / порты).

1 ответ

Может быть, это ваш php индекс... Потому что вы устанавливаете localhost и порт.

Я не уверен, как работает Cloudway. Но когда мы запускаем server.js, некоторые облака дают URL для доступа к нашим проектам...

В ваших облачных сетях попробуйте использовать официальный URL, который они дали вам для доступа к проекту:

var socket = io.connect('url.from.cloudway');

Например, я использую cloud9, и когда я выполняю server.js, возвращаем один URL, например:

Your code is running: https://demo-some-id.c9.io

И когда я использую socket.io, мне нужно установить в своем индексе параметр URL внутри IO.

var socket = io('https://demo-some-id.c9.io');

Вам нужно добавить версию socket.io.js на стороне клиента и добавить тег script с путем, например:

<script src="js/socket.io.js"></script>

Obs.: Некоторые облака, вам нужно установить URL в вашем <script> тег

<script src="https://demo-some-id.c9.io/socket.io/socket.io.js"></script>
Другие вопросы по тегам