Я пытался развернуть свой сервер веб-сокетов и запустить его, но всегда выдает:
PHP Fatal error:
Uncaught exception 'React\Socket\ConnectionException'
with message 'Could not bind to tcp://my_ip_here:8080:
Address already in use'
in /var/www/html/webscoket/vendor/react/socket/src/Server.php:29
вот мой server.php
:
<?php
require dirname(__DIR__) . '/vendor/autoload.php';
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use React\Socket\Server;
use React\ZMQ\Context;
$loop = React\EventLoop\Factory::create();
$app = new onyxsocket();
$webSock = new Server($loop);
$webSock->listen(8080, 'my_ip_here');
$webServer = new IoServer(
new HttpServer(
new WsServer(
$app
)
),
$webSock
);
$context = new Context($loop);
$pull = $context->getSocket(ZMQ::SOCKET_PULL);
$pull->bind('tcp://my_ip_here:5555');
$pull->on('error', function ($e) {
var_dump($e->getMessage());
});
$pull->on('message', array($app, 'onbroadcast'));
$loop->run();
До сих пор я пытался проверить доступные порты, которые можно использовать на рабочем сервере: netstat - anp
дал мне представление о том, что порт 8080
это бесплатно. Но проблема в том, что он все еще показывает ошибку Адрес уже используется. Я также попробовал другие порты, данные администратором, но не повезло.
server.php
то, что я пытаюсь развернуть, работает нормально на localhost. Но я не знаю, что мне нужно сделать, чтобы это работало на рабочем сервере.
Нужна помощь. Благодарю.
от @ user3666197 комментарий выше:
Уточните код, пожалуйста. Ваш серверный код ZeroMQ .bind () -s для порта # 5555. Так чей код связывается с портом localhost # 8080, о котором сообщается в необработанном исключении выше? Как вы очищаете для грациозного выхода любой сбойный EventLoop / Factory, чтобы освободить ресурсы и избежать зависания сирот?
Я решил перепроверить netstat: netstat -tulpen
и проверьте для портов 8080 и 5555 и узнайте, что есть зарегистрированный PID на порте, соединяющемся в настоящее время. Это приложение было тем же скриптом, который я хочу запустить на консоли, server.php
,
Я убиваю PID: kill PID_number
и запустить server.php
снова на консоли. Это сработало.
Других решений пока нет …