让 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 工作的主要内容,如果未能解决你的问题,请参考以下文章

如何从远程机器访问 websocket

python实现websocket服务器,可以在web实时显示远程服务器日志

Jetty Websocket 服务器在本地工作,但远程连接失败并出现“主机已关闭”错误,如何解决?

nginx动态重定向url

为啥 android webView 不支持 webSocket?

让 Jetty Websocket 使用与 JavaScript Websocket 相同的语言