php安装websocket扩展,Workerman websocket 扩展

Workerman websocket 扩展

1.安装

composer require tinymeng/worker-socket:~1.0.1 -vvv

目录结构

worker-socket 已集成thinkphp、larverl、yii框架使用

.

├── example 实例代码源文件目录

│ ├── laravel

│ │ ├── EventsController.php 回调事件处理实例

│ │ └── socket.php socket启动文件

│ ├── thinkphp

│ │ ├── Events.php 回调事件处理实例

│ │ └── socket.php socket启动文件

│ └── yii

│ ├── EventsController.php 回调事件处理实例

│ └── socket.php socket启动文件

├── src 代码源文件目录

│ └── Server.php 封装服务基础类

├── composer.json composer文件

├── LICENSE MIT License

└── README.md 说明文件

2.业务逻辑(Events类)

在项目/application/index/controller下创建文件Events类 Events.php

首先创建控制器类并继承 tinymeng\worker\Server,然后设置属性和添加回调方法

2.1 ThinkPhp框架示例如下:

/**

* Name: Events.php.

* Author: JiaMeng <666@majiameng.com>

* Description: websocket callback

*/

namespace app\index\controller;

use tinymeng\worker\Server;

use GatewayWorker\Lib\Gateway;

class Events extends Server{

/**

* @var string Socket connect address

*/

protected $socket = 'websocket://0.0.0.0:1314';

/**

* @var string The current class of namespace

*/

protected $eventHandler = 'app\index\controller\Events';

/**

* 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.启动项目

在应用根目录增加入口文件 socket.php

3.1.1 ThinkPhp框架示例如下:

#!/usr/bin/env php

/**

* 用于检测业务代码死循环或者长时间阻塞等问题

* 如果发现业务卡死,可以将下面declare打开(去掉//注释),并执行php socket.php reload

* 然后观察一段时间workerman.log看是否有process_timeout异常

*/

//declare(ticks=1);

define('APP_PATH', __DIR__ . '/application/');

/** Events类,根据自己的模块和控制器填写 */

define('BIND_MODULE','index/Events');

// 加载框架引导文件

require __DIR__ . '/thinkphp/start.php';

3.1.2 Laravel框架示例如下:

#!/usr/bin/env php

/**

* 用于检测业务代码死循环或者长时间阻塞等问题

* 如果发现业务卡死,可以将下面declare打开(去掉//注释),并执行php socket.php reload

* 然后观察一段时间workerman.log看是否有process_timeout异常

*/

//declare(ticks=1);

define('LARAVEL_START', microtime(true));

require __DIR__.'/vendor/autoload.php';

$app = require_once __DIR__.'/bootstrap/app.php';

/** Events类,根据自己的命名规范填写 */

$kernel = $app->make(App\Http\Controllers\EventsController::class);

3.1.3 Yii框架示例如下:

#!/usr/bin/env php

/**

* worker-socket command socket 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 = [

/** Events类,根据自己的命名规范填写 */

'class' => 'backend\controllers\EventController',

];

$modifyPassword = Yii::createObject($config);

3.2 在命令行启动服务端 php socket.php start

[root@izbp153yczpm4pp9pjs0u3z majiameng.com]# php socket.php start

Workerman[server.php] start in DEBUG mode

----------------------- WORKERMAN -----------------------------

Workerman version:3.5.13 PHP version:7.2.6

------------------------ WORKERS -------------------------------

user worker listen processes status

root ChatBusinessWorker none 4 [OK]

root ChatGateway websocket://0.0.0.0:1314 4 [OK]

root Register text://0.0.0.0:1236 1 [OK]

----------------------------------------------------------------

Press Ctrl+C to stop. Start success.

linux下面可以支持下面指令

php socket.php start|stop|status|restart|reload

需要后台运行的话

php socket.php start -d

4.测试

在浏览器中进行客户端测试

输入socket地址 ws://IP:1314 测试socket服务是否正常

网站事例: 打开 (需要登录哦!)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值