Я написал сервер веб-сокетов PHP на основе этой библиотеки: https://github.com/Flynsarmy/PHPWebSocket-Chat
Эта библиотека работает как сервер и обрабатывает все входящие запросы. Клиент может подключиться, когда я работаю локально (подключение к адресу 127.0.0.1:9300
), но я не могу подключиться, если мой клиент не находится на машине, на которой запущен сервер. Я попытался отключить брандмауэр; есть ли еще одна привилегия, которую мне нужно предоставить PHP, чтобы он мог получать и отвечать на сообщения через веб-сокет?
Я запускаю PHP5, Ubuntu Server 12.04 LTS и подключаюсь к Google Chrome (последняя версия).
From line 62 of https://github.com/Flynsarmy/PHPWebSocket-Chat/blob/master/server.php
// для подключения других компьютеров вам, вероятно, потребуется // изменить его на свой LAN IP или внешний IP, // в качестве альтернативы используйте: gethostbyaddr (gethostbyname ($ _ SERVER ['SERVER_NAME']))
$ Server-> wsStartServer ('127.0.0.1', 9300);
измените эту строку на,
$Server->wsStartServer('0.0.0.0', 9300);
или IP-адрес вашей локальной сети и попробуйте.
просто отредактируйте server.php; прямо сейчас он слушает только петлю [$ Server-> wsStartServer ('127.0.0.1', 9300); ]. измените его, чтобы прослушивать все IP-адреса [0.0.0.0?] или хотя бы один IP-адрес, назначенный сетевому интерфейсу [eth0? ] вашего сервера.
Файл server.php
содержит ответ на вашу проблему
// for other computers to connect, you will probably need to change this to your LAN IP or external IP,
// alternatively use: gethostbyaddr(gethostbyname($_SERVER['SERVER_NAME']))
$Server->wsStartServer('127.0.0.1', 9300);
Изменение последней строки на публичный IP-адрес вашего сервера, вероятно, решит вашу проблему.