让 WebSocket 从远程 URL 工作
Posted
技术标签:
【中文标题】让 WebSocket 从远程 URL 工作【英文标题】:Getting WebSocket to work from Remote URL 【发布时间】:2010-11-12 22:01:15 【问题描述】:我最近在我的一台家用机器上设置了一个 WebSocket 服务器,并试图让它通过远程连接工作。我使用了以下 php WebSocket 解决方案(支持 Draft 75 和 76):
Niko Kaiser 的 PHP Websocket 服务器
通过本地连接,演示可以完美运行。我可以从 localhost 很好地使用客户端演示,我的 DNS 指向我的家庭计算机,以及(最奇怪的部分)一个仅托管客户端文件的远程 PHP 主机。 javascript 指向我的 WebSocket 主机。
当我使用另一台机器时会出现问题,而不是在家里。即使我访问完全相同的 URL,WebSocket 也不会连接。这就是正在发生的事情:
指向家用机器的 URL - 只能在家工作。从其他 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,但如果我无法远程连接,我什至无法开始!每次我想编辑或查看我的作品时都必须远程桌面并不好玩!
【问题讨论】:
【参考方案1】:我注意到这是旧的,但我曾经遇到过这个问题。使其绑定到 0.0.0.0,因为这使它能够监听所有(因为没有更好的词)主机。
【讨论】:
【参考方案2】:听起来您的防火墙配置为允许端口 80 上的外部连接,但不允许端口 8000 上的外部连接。
【讨论】:
以上是关于让 WebSocket 从远程 URL 工作的主要内容,如果未能解决你的问题,请参考以下文章
python实现websocket服务器,可以在web实时显示远程服务器日志
Jetty Websocket 服务器在本地工作,但远程连接失败并出现“主机已关闭”错误,如何解决?