yii、thinkphp、larverl 框架中使用 worker-man 的 socket (使用框架实现回调方法) [ 技术分享 ]
内有demo thinkphp、larverl、yii框架使用worker-socket
可以查看我写的即时通讯案例 佳萌驿站 然后点击QQ登录
完美解决在 event 里面 ,onmessage 里面如何 嵌入 thinkphp,使用框架实现回调方法
1.安装
composer require tinymeng/worker-socket dev-master
2.业务逻辑 在项目 /backend/controllers 下创建文件EventController.php 首先创建控制器类并继承 tinymeng\worker\Server,然后设置属性和添加回调方法
2.1 yii框架示例如下:
<?php
namespace backend\controllers;
use tinymeng\worker\Server;
use GatewayWorker\Lib\Gateway;
/**
* EventController controller
*/
class EventController extends Server
{
/**
* @var string Socket connect address
*/
protected $socket = 'websocket://0.0.0.0:1314';
/**
* @var string The current class of namespace
*/
protected $eventHandler = 'backend\controllers\EventController';
/**
* Description: 当客户端连接时时触发
* @param $client_id
*/
public static function onConnect($client_id){
echo 'client_id : '.$client_id. ', connect ' .PHP_EOL;
}
/**
* Description: 当客户端发来消息时触发
* Author: JiaMeng <666@majiameng.com>
* @param int $client_id 连接id
* @param string $data 具体消息
* @return bool
*/
public static function onMessage($client_id, $data) {
echo 'client : '.$client_id. ',message data :'.$data .PHP_EOL;
}
/**
* Description: 当客户端断开连接时触发
* Author: JiaMeng <666@majiameng.com>
* Updater:
* @param int $client_id 连接id
*/
public static function onClose($client_id) {
echo 'client_id : '.$client_id .' close '.PHP_EOL;
}
}
支持workerman所有的回调方法定义(回调方法必须是public static类型)
3.配置thinkphp的启动文件然后来启动 workman 这样回调就会主动回调回写的控制中了,可以试一试哦
#!/usr/bin/env php
<?php
/**
* worker-socket command start file.
*/
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require __DIR__ . '/vendor/autoload.php';
require __DIR__ . '/vendor/yiisoft/yii2/Yii.php';
$config = [
'class' => 'backend\controllers\EventController',
];
$modifyPassword = Yii::createObject($config);
案例图片:
共 1 条回复
tinymeng 北京
注册时间:2018-03-05
最后登录:2024-10-24
在线时长:36小时43分
最后登录:2024-10-24
在线时长:36小时43分
- 粉丝7
- 金钱25065
- 威望20
- 积分25625