让WebSocket从远程URL工作

时间:2010-11-12 22:01:15

标签: php html5 websocket

我最近在我的一台家用机器上设置了一个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,但如果我无法远程连接,我甚至无法启动!每次我想编辑或看到我的作品时,都必须使用远程桌面!

2 个答案:

答案 0 :(得分:4)

我注意到这已经过时了,但我一度有这个问题。使它绑定到0.0.0.0,因为这使得它可以监听所有(缺少更好的单词)主机。

答案 1 :(得分:0)

听起来您的防火墙配置为允许端口80上的外部连接,但不允许端口8000上的外部连接。