我开始使用PhP棘轮插座。按照指南,我可以制作一个简单的聊天应用程序,它可以在同一台计算机上运行。例如,如果我打开chrome和firefox,我可以交互发送和接收消息,确定。
问题是当我尝试使用其他计算机上的聊天应用程序,但是在同一个互联网连接中,或者甚至在我尝试在线测试时。
在局域网上,其他计算机无法与套接字连接,在线无人可以连接。
通过环顾四周,我发现使用'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');
答案 0 :(得分:1)
127.0.0.1
将始终指向本地设备,该设备在套接字服务器以外的设备上不指向托管该设备的设备套接字服务器如果运行套接字服务器的设备无法从Internet路由,则无法从Internet连接到套接字。
您可以通过确定运行服务器的设备的网络IP来测试LAN上的其他设备。然后在您的客户端代码中,连接到那个 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
上的数据包,您可能仍会遇到麻烦。如果是这样,您可以很容易地为服务器和客户端更改为不同的端口。