我最近在我的一台家用机器上设置了一个WebSocket服务器,并试图通过远程连接使其工作。我使用了以下PHP WebSocket解决方案(支持Draft 75和76):
Niko Kaiser的PHP Websocket服务器
通过本地连接,该演示可以完美运行。我可以使用localhost中的客户端演示,我的DNS指向我的家庭计算机,以及(最奇怪的部分)远程PHP主机,它只承载客户端文件。 javascript指向我的家用机器上的WebSocket。
当我使用另一台不在家的机器时会出现问题。即使我转到完全相同的URL,WebSocket也无法连接。所以这是正在发生的事情:
指向家庭计算机的网址 - 仅限家庭使用。来自其他PC的页面加载,但WebSocket不会连接。 http://whoisryannystrom.com/tests/socket/client - 仅在家工作。来自其他PC的页面加载,但WebSocket无法连接。
我在client.html文件中设置了WebSocket地址(我知道这是正确的)。这在localhost和远程客户端html文件中是相同的。
var server = new WebPush('ws://rnystrom.mine.nu:8000/echo');
然后我对服务器的PHP文件需要具有的地址感到困惑。这是我目前的情况:
主服务器php(server.php):
$server = new \WebSocket\Server('rnystrom.mine.nu', 8000);
然后在\ server \ lib \ WebSocket(WebSocket类文件中,我认为......)我使用'localhost'。我试过'rnystrom.mine.nu'和'localhost',两者都在家用机器上运行,而且它们都没有远程工作,所以它似乎没有什么区别。我相信$ host在构造函数中使用。主server.php定义$ host是什么。
我很茫然。我真正想做的就是能够开始尝试使用WebSockets,但如果我无法远程连接,我甚至无法启动!每次我想编辑或看到我的作品时,都必须使用远程桌面!
答案 0 :(得分:4)
我注意到这已经过时了,但我一度有这个问题。使它绑定到0.0.0.0,因为这使得它可以监听所有(缺少更好的单词)主机。
答案 1 :(得分:0)
听起来您的防火墙配置为允许端口80上的外部连接,但不允许端口8000上的外部连接。