php - PHP Socket卡在接受
问题描述
我有一个 php 套接字服务器和一个 javascript websocket,但 websocket 卡在连接到套接字。没有错误,但 websocket 保持连接。
袜子.php
set_time_limit(0);
$ip = '127.0.0.1';
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$ret = socket_bind($sock, $ip);
$ret = socket_listen($sock);
do
{
$ref = socket_accept($sock);
/*
Write message
*/
$msg ="Success receive from client\n";
socket_write($ref, $msg, strlen($msg));
/*
Read message
*/
$buf = socket_read($ref , 1024);
echo "Received message: $buf\n";
socket_close($ref);
}while (true);
socket_close($sock);
?>
javascript网络套接字:
var sock = new WebSocket('ws://localhost/sock.php');
sock.onopen(function()
{
console.log('socket connected.');
});
解决方案
您必须指定正确的端口,socket_bind()
否则它将侦听随机端口。您可以netstat
在 Linux 和 Windows 上进行检查。当您尝试连接时ws://localhost
,应该是端口 80。但是通常不允许绑定到端口 80,除非您是管理员用户。最好绑定到另一个端口,例如 8080,然后连接到ws://localhost:8080
.
推荐阅读
- python - 有没有办法从三个单独的 for 循环中合并三个字典?
- jquery-ui-sortable - 可排序插件,可通过拖放转换对图像进行排序
- ionic-framework - 我试图安装 ionic 但它返回:npm ERR!代码 E418
- c# - Mapping rectangular texture onto sphere
- android - Android studio - ListView 购物车数量按钮
- java - VSCode:粘贴时自动缩进 Java 代码
- python - 退出时内存损坏(或愚蠢的用户错误)
- c# - 时间:2019-01-10 标签:c#send discord webhook
- sql - PostgreSQL选择逗号分隔值列的不同值,不包括子集
- javascript - 为什么我的代码不起作用?