1 安装swoole插件
我php的版本是7.3, Swoole4.
2 安装think-swoole
在站点根目录下运行
composer require topthink/think-swoole:2.0.0
3 修改站点ngnix配置文件
添加wss节点
location /wss {
proxy_pass http://127.0.0.1:9501;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
rewrite /wss/(.*) /$1 break;
proxy_redirect off;
proxy_connect_timeout 5s; #配置点1
proxy_read_timeout 60000s; #配置点2,如果没效,可以考虑这个时间配置长一点
proxy_send_timeout 60000s; #配置点3
}
4 服务端代码
<?php
namespace app\common\library;
use fast\Random;
use think\Hook;
use think\swoole\Server;
/**
* 短信验证码类
*/
class WSServer extends Server
{
protected $host = '127.0.0.1'; //监听所有地址
protected $port = 9501; //监听9501端口
protected $serverType = 'socket';
protected $option = [
'worker_num'=> 4, //设置启动的Worker进程数
'daemonize' => false, //守护进程化(上线改为true)
'backlog' => 128, //Listen队列长度
'dispatch_mode' => 2, //固定模式,保证同一个连接发来的数据只会被同一个worker处理
//心跳检测:每60秒遍历所有连接,强制关闭10分钟内没有向服务器发送任何数据的连接
'heartbeat_check_interval' => 60,
'heartbeat_idle_time' => 600
];
//建立连接时回调函数
public function onOpen($server, $req)
{
$fd = $req->fd;//客户端标识
$uid = $req->get['uid'

本文介绍了如何在PHP7.3环境中安装Swoole插件,使用think-swoole库,以及如何在Nginx中配置WebSocket支持,包括添加wss节点,设置超时和心跳检测。还展示了服务端和前端代码示例,以及如何解决同源跨域问题。
最低0.47元/天 解锁文章
7971

被折叠的 条评论
为什么被折叠?



