Toggle navigation
菜菜小站
菜菜小站
前端开发
前端开发
前端基础
bootstrap
JavaScript
微信小程序
后端开发
后端开发
php开发
laravel
数据库
编辑器
git
微信开发
服务器
服务器
https
cos云存储
ubuntu
homestead
go
ContactMe
laravel-websocket(一)
作者:
菜菜子
|
时间:2018-06-28 09:59:00 |
分类:
laravel
,
后端开发
|
访问: 2,080 次|
评论:
0 评论
搭建简易websocket ------------------ # 1 . 安装swoole扩展 ubuntu查看安装php 的swoole插件 > php -m 如果有swoole就表示已经安装swoole扩展,直接看2 未安装则执行 * cd ~ * wget -c https://github.com/swoole/swoole-src/archive/v2.0.6.tar.gz * cd swoole-src-2.0.6 * phpize * ./configure * make && make install 成功后显示 > Installing shared extensions: /usr/lib64/php/modules/ 添加swoole扩展至php.ini * 查看当前版本php.ini位置 > sudo find / -name php.ini homestead会出现类似下面的情况,使用php -v查看当前版本号 ``` /etc/php/5.6/fpm/php.ini /etc/php/5.6/cli/php.ini /etc/php/7.1/fpm/php.ini /etc/php/7.1/cli/php.ini /etc/php/7.2/fpm/php.ini /etc/php/7.2/cli/php.ini /etc/php/7.0/fpm/php.ini /etc/php/7.0/cli/php.ini ``` 如果是7.2版本 添加下面的拓展到对应fpm和cli目录php.ini下 > extension=swoole.so 重启php-fpm 再次查看是否安装成功 > php -m # 2.安装redis包 > composer require predis/predis > composer require \-\-dev "eaglewu/swoole-ide-helper:dev-master" .env文件配置redis # 3.env同级目录下创建SwooleStart.php文件 ```php server = new swoole_websocket_server("0.0.0.0", SWOOLE_PORT); $log_file = SWOOLE_ROOT_PATH . 'storage/logs/swoole-' . date('Y-m-d') . '.log'; $this->server->set(array( 'worker_num' => 1, //工作进程数量 'daemonize' => true, //是否作为守护进程 'dispatch_mode' => 5, // 'log_file' => $log_file )); // //监听WebSocket连接打开事件 $this->server->on('open', array($this, 'open')); $this->server->on('workerStart', array($this, 'workerStart')); $this->server->on('message', array($this, 'msg')); $this->server->on('close', array($this, 'close')); $this->server->start(); } public function workerStart($server, $worker_id) { //定时器检测非法离线的用户让其下线 // swoole_timer_tick(10000, function ($worker_id) use ($server) { //// echo "已同步最新的在线状态" . "\n"; // }); } public function msg($server, $request) { echo $request->fd."消息".$request->data. "\n"; if ($request->fd == 1) { $server->push(2, "由2发来的消息:".$request->data . "\n"); }else{ $server->push(1,"由1发来的消息:", $request->data . "\n"); } // echo "消息"; $server->push($request->fd, $request->fd."你发到服务器的消息:" . ($request->data) . "\n"); } public function open($server, $request) { echo "开启".$request->fd; $server->push($request->fd, '开启' . "\n"); } public function close($server, $fd) { echo "关闭".$fd; $server->close($fd); } } ``` 上面的文件表示websocket使用服务器9503端口 # 4. 创建swoole启动、关闭、重启命令 ```php argument('action'); switch ($action) { case 'start': $this->start(); break; case 'stop': $this->stop(); break; case 'restart': $this->restart(); break; default: break; } } public function start() { shell_exec('php SwooleStart.php'); } public function restart() { shell_exec('php artisan swoole stop'); shell_exec('php SwooleStart.php'); //shell_exec('php artisan swoole start'); } public function stop() { shell_exec('pid=$(ps aux | grep SwooleStart | awk \'{print $2}\' | awk \'{print $1}\') kill $pid'); } } ``` 开启 > php artisan swoole start 关闭 > php artisan swoole stop 重启 > php artisan swoole restart # 5. 使用在线调试工具 http://easyswoole.com/wstool.html 用这个工具开启两个页面,开启swoole之后两个页面可以互相通信 ps:需要注意的是端口是否开启,可以使用http://tool.chinaz.com/port/ 这个站长工具端口扫描检查 文档: https://wiki.swoole.com/wiki/page/p-server.html 框架: https://www.easyswoole.com/ 注释:执行php artisan swoole stop 后需要等待swoole服务完全关闭后在启动,可以启动的标志是执行`sudo netstat -anp|grep 9503(端口号)`后没有任何数据输出
标签:
laravel5
,
websocket
还不快抢沙发
添加新评论
昵称(必填)
邮箱(必填)
网站(选填)
内容(必填)
提交评论
最新文章
部署go项目
lumen多个项目共用代码
lumen >=5.8中使用pusher广播
nginx负载均衡配置(二)
nginx负载均衡配置(一)
laravel中redis发布订阅相关问题处理
mysql 主从备份(一)
最新回复
DeWjjj: 兄弟很好使,奥力给!
懒猫爱伸腰: 大佬,问题我解决了,就加了一行代码 把ap-nanj...
懒猫爱伸腰: 大佬,啥会儿更新一下,现在又南京的桶了。。。。。
菜菜子: https://laravel-admin.org/d...
庆: laravel-admin 中图片上传如何限制图片尺寸...
惹我: 123
zhwangart: 感谢作者分享,这个问题简直烦死个人!终于解决~
世界和平: 大佬,可以加一个压缩图片后再上传到OSS的功能吗?我看...
拾一: 大部分文件上传都是转圈圈。。一直提示不成功
时年: 好了好了,多谢
标签
bootstrap
前端框架
laravel5
laravel
laravel-admin
gd库
微信小程序
表单
https
git
mysql
wamp配置
ajax
cos小工具
cos
cos插件
微信支付
swoole
redis
邮件发送
腾讯云
sql语言
jwt
typecho
数组
破解
编辑器
ubuntu
elasticsearch
vue
homestead
linux
websocket
nginx
docker
负载均衡
标签
刷新
加密处理
验证码
悬浮框
权限控制
markdown
shell
ui
任务调度
定时任务
deployer
gogs
反向代理
go
ftp
测试
分页
队列
微信公众号
日志
wnmp
vagrant
无限极分类
分销
集合
supervisor
部署
grid
python
chunk
api管理工具
oss
缓存
pusher
laravel-push
归档
2020年11月
2020年07月
2020年05月
2020年01月
2019年12月
2019年11月
2019年10月
2019年09月
2019年08月
2019年07月
2019年06月
2019年05月
2019年03月
2019年01月
2018年12月
2018年11月
2018年10月
2018年09月
2018年08月
2018年07月
2018年06月
2018年05月
2018年04月
2018年03月
2017年09月
2017年06月
2017年05月
2017年04月
2017年03月
2017年02月
2017年01月
2016年12月
2016年11月
友情链接
空
//