yii2扩展 基于swoole的websocket服务器 [ 技术分享 ]
yii2-swoole-websocket
利用swoole搭建了websocket服务器 不修改yii2直接使用 可以根据demo进行修改满足自己的websocket使用场景
测试使用 php7.2 swoole1.10.3 yii2-advanced
实现了控制台中命令启动websocket服务器
写了一个完整的2人聊天demo,帮助大家入门使用
安装
1.使用composer composer的安装以及国内镜像设置请点击此处
$ composer require tystudy/yii2-swoole-websocket -vvv
or add
"tystudy/yii2-swoole-websocket": "*"
2.配置yii2
打开console/config/main.php(注意:并不是配置在components里面,而应该在最外层,即与components同级)。
'id' => 'app-console',
...//其他配置
'controllerMap'=>[
...//其他配置项
'websocket' => [
'class' => 'tystudy\swoole\console\SwooleController',
'rootDir' => str_replace('console/config', '', __DIR__ ),//yii2项目根路径
'app' => 'backend',
'host' => '0.0.0.0', //默认监听所有机器 可以填写127.0.0.1只监听本机 详见swoole文档
'port' => 9998,
'web' => 'web', //默认为web rootDir app web目的是拼接yii2的根目录
'debug' => true, //默认开启debug,上线应置为false
'env' => 'dev', //默认为dev,上线应置为prod
'swooleConfig' => [ //swoole 相关配置 详见swoole文档
'reactor_num' => 2,
'worker_num' => 4,
'task_worker_num' => 4,
'daemonize' => false,
'log_file' => __DIR__ . '/../../backend/runtime/logs/swoole.log',
'log_level' => 0,
'pid_file' => __DIR__ . '/../../backend/runtime/server.pid',
],
'project'=>[ //项目server路径 根据实际情况填写
'server'=>[
'tystudy\swoole\project\ProjectWebsocketServer',
],
]
],
...//其他配置
]
...//其他配置
3.启动命令 linux 进入项目目录
* 启动 ./yii websocket/start
* 关闭 ./yii websocket/stop
* 重启 ./yii websocket/restart
4.project项目demo文件 实现2人聊天的websocket应用
使用说明:
* 1.yii2 控制台中启动server linux 下使用命令 ./yii websocket/start
* 2.将project文件夹下的chat_server_websocket.php chat_server_websocket2.php 放任意可访问目录,修改websocket server IP
* 3.聊天使用mysql存储
5.项目扩展应用
参考project使用方法
6.说明 由于swoole的websocket server具有http server的功能,可以利用websocket server来实现对http请求的响应 一般不建议这样处理,线上环境通常是apache或nginx比swoole的功能更加完善,建议用来单纯的做websocket服务器 实现php的长链接和一些推送任务,如果需要,可以使用多个swoole服务器,用nginx实现负载均衡
共 1 条回复
-
有朋友反映使用composer无法安装
请把yii2的composer.json 修改 "minimum-stability": "dev"
后续会增加大家关心的并发测试和最大连接数测试
详细情况,请查看 https://github.com/tystudy/yii2-swoole-websocket
tystudy
注册时间:2018-05-02
最后登录:2018-08-07
在线时长:0小时53分
最后登录:2018-08-07
在线时长:0小时53分
- 粉丝0
- 金钱15
- 威望0
- 积分15