在Web服务器上使用PHP Websocket

6

几天前,我使用http://code.google.com/p/phpwebsocket/搭建了这个WebSocket服务器。

在本地使用Xampp时,它表现得非常出色。然后,我将其上传到我的Strato网络空间,但现在我无法连接到服务器。

我已经将套接字连接更改为我的域名,但仍然无法连接成功。

Client.html:

var host = "ws://xxxxxxxx.com:12345/Websocket/server.php";

Server.php:

$master  = WebSocket("xxxxxx",12345);

我已经尝试过使用不同的端口(80、443、12345、8080、8000等),在server.php中使用IP地址而非域名。

我还在client.html中使用了绝对路径和相对路径。

从项目页面http://code.google.com/p/phpwebsocket/上,有人建议在server.php中使用0或0.0.0.0,但这也没有起作用。

在client.html中只显示:

WebSocket - 状态0 断开连接 - 状态3

我猜问题是Strato阻止我使用WebSockets。 在我的网站空间上运行WebSockets是否可能?


在客户端窗口中,它只显示:WebSocket - 状态 0 断开连接 - 状态 3。 - Silicium
你考虑过使用node.jssocket.io吗? - crackmigg
你确定客户端机器也开放了适当的端口吗? - ethrbunny
它不应该在端口HTTP 80、443上工作吗? - Silicium
2
获取一个网络分析器,弄清楚线路上到底发生了什么;找出你的PHP错误日志并检查可能存在的问题。如果您发现任何问题,请将其添加到您的问题中,我们可能能够提供帮助,但您应该与Strato联系以获得更多支持。 - robertc
显示剩余6条评论
2个回答

4
我猜测您的主机正在阻止套接字的传入请求。您不应该在Web服务中运行像phpwebsocket这样的脚本(它本身就是一个服务器)。这让很多人感到困惑,因为PHP通常用于编写网页脚本,而不是编写守护进程。
我这么说是因为您提到了在Xampp中运行脚本,并将您的托管服务称为“webspace”。
如果是这种情况,您将需要升级到虚拟服务器套餐,以便可以运行自己的服务。

3

好的,让我们结束这个话题。

我找到了一个解决方案来使用我的Websockets应用程序,并且我知道为什么它不能在我的共享托管解决方案上工作。

我联系了Strato,他们告诉我他们不允许在共享托管上使用Websocket。获得类似结果的唯一方法是使用AJAX长轮询。

现在我购买了一个虚拟服务器,我的websocket应用程序现在运行得很好。

感谢您的支持。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接