Swoole WebSocket开启SSL支持 使用wss连接

本文介绍了如何在Swoole WebSocket服务器上开启SSL支持,以实现wss安全连接。首先,你需要获取pem格式的SSL证书。接着,确保Linux系统安装了openssl,并在Swoole编译时添加openssl支持。然后,在WebSocket服务器配置文件中设置SSL证书路径。最后,客户端通过js使用wss连接,服务器和浏览器需通过https访问。成功配置后,可以看到服务器和客户端的连接状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先要申请SSL证书,必须为pem格式。

如图为宝塔环境所申请Let's Encrypt免费证书的所在位置:

Linux安装openssl支持:

yum install -y openssl

移到Swoole安装包目录,重新编译安装,并加入openssl支持:(相关文章:Linux下源码包安装Swoole及基本使用

phpize

./configure --enable-openssl --with-php-config=/www/server/php/72/bin/php-config

make clean

make && make install

查看Swoole已经开启openssl支持:

php --ri swoole

### ThinkPHP 集成 Swoole WebSocket 教程及宝塔面板配置 #### 一、环境准备 为了在 ThinkPHP使用 Swoole 实现 WebSocket,在开始之前需确认服务器已安装并正确配置 PHPSwoole 扩展。如果需要启用 SSL 支持,则还需确保 Swoole 已通过 `--enable-openssl` 参数重新编译[^2]。 #### 二、Swoole 的安装与配置 1. **安装 Swoole** 如果尚未安装 Swoole,可以通过以下命令完成安装: ```bash pecl install swoole ``` 或者手动下载源码包后执行如下操作以支持 OpenSSL: ```bash phpize ./configure --enable-openssl --with-php-config=/path/to/php-config make && make install ``` 2. **加载扩展** 编辑 `php.ini` 文件,添加或修改以下内容以加载 Swoole 扩展: ```ini extension=swoole.so ``` 3. **验证安装** 运行以下命令检查 Swoole 是否成功安装以及是否启用了 OpenSSL 功能: ```bash php -m | grep swoole php -i | grep swoole ``` #### 三、ThinkPHP 中实现 WebSocket 以下是基于 ThinkPHP5.0 结合 Swoole 开发 WebSocket 聊天功能的具体方法: 1. **创建入口文件** 在项目根目录下的 `public/` 监听 WebSocket 请求的启动脚本 `websocket.php`: ```php <?php namespace app\index; use think\facade\App; use Swoole\Http\Request; use Swoole\Http\Response; use Swoole\WebSocket\Server as WSServer; class Websocket { protected $server; public function start() { $this->server = new WSServer('0.0.0.0', 9501); // 设置回调函数 $this->server->on('open', [$this, 'onOpen']); $this->server->on('message', [$this, 'onMessage']); $this->server->on('close', [$this, 'onClose']); echo "WebSocket Server started on port 9501\n"; $this->server->start(); } public function onOpen($server, Request $request) { echo "Client {$request->fd} connected.\n"; } public function onMessage($server, $frame) { echo "Received message: {$frame->data}\n"; foreach ($server->connections as $connection) { $server->push($connection, json_encode([ 'type' => 'new_message', 'content' => htmlspecialchars($frame->data), ])); } } public function onClose($server, $fd) { echo "Client {$fd} closed.\n"; } } (new Websocket())->start(); ``` 2. **运行 WebSocket 服务** 启动 WebSocket 服务时可以指定绑定模块,默认情况下会映射到 `Home` 模块中的控制器路径[^1]。例如: ```bash php public/index.php home/Websocket/start ``` #### 四、宝塔面板配置 1. **防火墙设置** 登录宝塔面板后进入安全选项卡,开放 WebSocket 使用的端口(如上例中的 9501)。点击【放行端口】按钮即可。 2. **反向代理配置** 若希望将 WebSocket 流量通过 HTTPS 协议转发至本地监听的服务实例,可按以下方式设置 Nginx 反代规则: - 前往站点管理页面 -> 【配置文件】编辑区域; - 添加类似下面的内容来处理 ws/wss 请求路由转换逻辑: ```nginx location /ws/ { proxy_pass http://127.0.0.1:9501/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header Host $host; proxy_read_timeout 86400s; } ``` 3. **HTTPS/WSS 支持** 若要提供更安全可靠的通信机制,请参照官方文档说明为域名申请免费证书或者上传已有 CA 认证过的公私钥对材料。完成后记得重启相关组件生效更改后的参数设定值。 --- ###
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李维山

帮到你就行 不差钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值