PHP Ratchet无法从其他设备连接
我开始使用PhP棘轮插口。遵循指南,我可以创建一个简单的聊天应用程序,并在同一台计算机上工作。例如,如果我打开chrome和firefox,我可以交互发送和接收消息,好的。PHP Ratchet无法从其他设备连接
问题是,当我尝试使用另一台计算机上的聊天应用程序,但在同一网络连接中,或者甚至当我试图在线测试它时。
当使用局域网时,其他计算机无法连接到套接字并且在线无法连接。
通过环顾四周,我发现使用'0.0.0.0'甚至端口5555来启用任何人的连接。但即使使用这个,我也无法连接。
我该如何解决这个问题?这是我的文件:
server.php
<?php
use Ratchet\Server\IoServer;
use Ratchet\http\HttpServer;
use Ratchet\WebSocket\WsServer;
require __DIR__ . '/../vendor/autoload.php';
$server = IoServer::factory(
new HttpServer(
new WsServer(
new Chat()
)
), 2000, '0.0.0.0'
);
$server->run();
?>
和客户端的js文件:
var socket = new WebSocket('ws://127.0.0.1:2000');
127.0.0.1
将总是点到本地设备,其中,在比插座等设备服务器,将而不是指向承载套接字服务器的设备。如果运行套接字服务器的设备不能从Internet路由,您将无法通过Internet连接到套接字。
您可以从LAN上的其他设备进行测试,方法是确定运行服务器的设备的网络IP地址。然后在您的客户端代码中,连接到即 IP。它可能会接近192.168.x.x
,例如192.168.1.12
(它也可以在10.x.x.x
或172.16.x.x
地址空间中)。然后,只需使用该地址从您的客户端脚本连接来进行测试:
var socket = new WebSocket('ws://192.168.1.12:2000');
您可能仍然会碰到麻烦,如果出于某种原因,你的网络被配置为在端口2000
丢弃数据包。如果是这样,您应该很容易地为您的服务器和客户端更改为不同的端口。
在本地主机上,我现在可以测试了。但是在网上使用它时我仍然遇到问题。我得到这个错误:''WebSocket'执行失败'发送':当我尝试发送时仍处于CONNECTING状态。或者如果我等待,它不会连接,并且还会返回一个错误'失败:连接建立时出错:net :: ERR_CONNECTION_TIMED_OUT' – celsomtrindade
'online'是什么意思?您是否将此部署到位于不在您的网络上的某个服务器上的网站?我上面的答案只适用于与套接字服务器在同一网络上的设备 –
是的,我试图在网站上在线测试它。本地主机工作得很好,比我在我的网站上尝试它并得到这些错误。 Ps:使用127.0.0.1 – celsomtrindade
在客户端,你试过使用服务器地址而不是'127.0.0.1',就像'192.xxx.xxx.xxx' – codisfy
@codeHeart在本地主机上工作,但如何使它在线工作? – celsomtrindade