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>