@alikenski
Fullstack Web Developer

Как запустить Workerman Websocket сервер рядом с Apache?

Есть сервер Apache. Он запущен на порту 80.

Архитектура проекта
- workspace
-- api
-- js
-- img
-- css
-- views
--socket
-- app.js
-- index.js

В папке socket лежит файл sever.php в котором вот такой код:
<?php
    use Workerman\Worker;
    use PHPSocketIO\SocketIO;

    require_once __DIR__ . '/vendor/autoload.php';
    
    // listen port 2021 for socket.io client
    $io = new SocketIO(3001);
    $io->on('connection', function($socket)use($io){
        $io->emit('listen', $msg);
    });
    
    Worker::runAll();
?>


Это чудо запускается через консольную команду: php server.php start
Запускается хорошо и без ошибок в коде.

Apache: запущен на порту 80
Workerman: запущен на порту 3001

Чтобы подписаться на сокеты использую Socket.io на фронте c AngularJS.
Файл подключения:
angular
	.module('kanban')
    .factory('Socket', function (socketFactory) {
        return socketFactory({
            ioSocket: io.connect('http://[IP]:3001')
        });
    });


Но появляется ошибка в консоле: http://[IP]:3001/socket.io/?EIO=3&transport=pollin... net::ERR_CONNECTION_TIMED_OUT

1) Как решить эту проблему?
2) Надо ли писать что-то в конфигураций Apache
3) Правильно ли все запускается?
  • Вопрос задан
  • 772 просмотра
Пригласить эксперта
Ответы на вопрос 1
@vldud
1) Смотреть в сторону клиента, гуглить по запросу "socket.io ERR_CONNECTION_TIMED_OUT"
2) А при чем тут апач? Он в этой схеме не участвует.
3) Запускается вроде бы верно.

И кстати, на сервере эмитится событие listen, вы его на клиенте никак не обрабатываете вроде бы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы