php实现websocket实时通讯(代码及宝塔部署)

在Thinkphp或者BuildAdmin中均可。

一、使用workman的websocket(最简单的)

1、使用composer下载相关依赖

composer require workerman/workerman:4.2.*

2、建立基本类

一个类就够了——基础的,不用担心和框架的集成问题,随便放项目的文件夹中

<?php
require_once '../vendor/autoload.php';

use Workerman\Worker;

// 创建 WebSocket 服务
$ws_worker = new Worker("websocket://0.0.0.0:8080");

// 当有新客户端连接时触发的回调函数
$ws_worker->onConnect = function($connection) {
    echo "新客户端连接\n";
};

// 当有客户端发送消息时触发的回调函数
$ws_worker->onMessage = function($connection, $data) {
    echo "receive message: $data\n";
    $connection->send("$data_from_server: $data");
};

// 当有客户端断开连接时触发的回调函数
$ws_worker->onClose = function($connection) {
    echo "客户端断开连接\n";
};

// 当出现错误时触发的回调函数
$ws_worker->onError = function($connection, $code, $msg) {
    echo "连接出错:$code $msg\n";
};

// 如果是在命令行直接启动该脚本,运行所有 Worker
if (!defined('GLOBAL_START')) {
    Worker::runAll();
}

3、运行

这种方式通过在终端使用命令行即可启动:

php WebSocketServer.php start

运行成功的截图:

如果出现截图如下,均运行失败:

二、宝塔项目部署:

在网站项目——>设置——>配置文件中添加下面代码:

    location /wss {
    proxy_pass http://0.0.0.0:8080;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Real-IP $remote_addr;
    }

部署注意事项:

1、端口要和WebSocketServer.php中端口对应;

2、如果添加上述代码保存报错的话,排查ngnix和所有站点配置文件:如果其他站点配置文件有误,也会影响本网站。

3、中途删除代码前要记得停止服务,不然就算代码删除了,服务依旧在运行,使用命令行:

php WebSocketServer.php stop

三、测试前端连接

1、在Apifox测试工具

更多功能——>新建WebSocket接口:可以测试并查看连接和发送信息情况

格式为:wss://域名/wss或ws://域名/wss

2、微信开发者工具

格式:wss://域名/wss(开发环境中可使用ws://域名/wss,但是发布版本要wss开头并配置ssl证书——小程序要求,不然无法正常使用)

101的状态码表示连接成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值