安装使用Workerman实现websocket前后端通信,后端主动推送消息到前端,实现后端有数据更新时,前端页面自动更新数据。
我使用的是基于Thinkphp5.0的ThinkCMF5.0。
安装:
composer require topthink/think-worker=v1.0.1
启动:
php server.php start -d
public目录下放置的server.php文件,注意里面的配置必须按照你的Worker控制器来:
#!/usr/bin/env php
<?php
// 调试模式开关
define("APP_DEBUG", false);
// 定义 APP 命名空间
define("APP_NAMESPACE", 'api');
// 定义CMF根目录,可更改此目录
define('CMF_ROOT', __DIR__ . '/../');
// 定义应用目录
define('APP_PATH', CMF_ROOT . 'api/');
// 定义CMF目录
define('CMF_PATH', CMF_ROOT . 'simplewind/cmf/');
// 定义网站入口目录
define('WEB_ROOT', __DIR__ . '/');
// 定义插件目录
define('PLUGINS_PATH', __DIR__ . '/plugins/');
// 定义扩展目录
define('EXTEND_PATH', CMF_ROOT . 'simplewind/extend/');
define('VENDOR_PATH', CMF_ROOT . 'simplewind/vendor/');
// 定义应用的运行时目录
define('RUNTIME_PATH',__DIR__.'/../data/runtime/api/');
//define('APP_PATH', __DIR__ . '/api/');
define('BIND_MODULE','user/Worker');
// 加载框架引导文件
require __DIR__ . '/../simplewind/thinkphp/start.php';
woker控制器:
<?php
namespace api\user\controller;
use think\Db;
use think\worker\Server;
use Workerman\Worker;
use Workerman\Lib\Timer;
class WorkerController extends Server
{
protected $socket = 'websocket://0.0.0.0:2346';
protected $uidConnections =

文章介绍了如何在Thinkphp5.0框架下的ThinkCMF5.0环境中,利用Workerman实现WebSocket的前后端通信,特别是后端如何主动推送消息到前端,确保数据更新时前端页面能自动刷新。配置包括Composer安装、启动命令、服务器配置以及Worker控制器的编写。还涉及到前端WebSocket连接和Nginx的配置,以及进程间通讯的问题。
最低0.47元/天 解锁文章
1431





