WebSocket 服务基于现有 swoole ws server 上的进一步封装实现。即开启 websocket 服务的同时可以处理 http 请求。
快速的搭建使用 websocket server
支持完全的自定义流程处理,如果你不想使用框架自带的处理
支持消息阶段的数据解析和路由调度
通用的消息发送方法封装(send, sendToSome, sendToAll, broadcast 等)
websocket 解决的问题如消息推送,聊天室,等需要服务器和客户端长期交互的场景,swoft 帮助我们简化了 websocket 开发流程。
连接处理流程
配置参数
websocket 的 host, port 等配置是都是完全可以自定义的。 配置需要编辑 app/bean.php 文件,下面列举了一些简单的配置,你也可以自由组合同时提供多种服务。
websocket server 的默认端口是 18308
'wsServer' => [
'class' => WebSocketServer::class,
'port' => 18308,
'on' => [
// Enable http handle
SwooleEvent::REQUEST => bean(RequestListener::class),
],
'debug' => 1,
// 'debug' => env('SWOFT_DEBUG', 0),
/* @see WebSocketServer::$setting */
'setting' => [
'log_file' => alias('@runtime/swoole.log'),
],
],
可配置项用于 ws server bean 配置,除了 class 其他都是 ws server 的属性。
常用选项 ( mode 与 type 未介绍 )
配置项 和 httpServer 基本一致
- class 指定 websocket server 的处理类
- port 指定 websocket server 的端口
- listener 指定其他一同启动的服务,添加端口服务监听,可以多个。
- rpc 启动 RPC 服务
- process 启动自定义用户进程
- on 配置监听的事件
- 注册事件、设置对应事件的处理监听,事件触发组件调用,在任务里面使用
- setting 这里是参考 Swoole Server 配置选项
- pidFile 设置进程 pid 文件 位置,默认值 @runtime/swoft.pid
Websocket Server 命令
在项目目录下执行如下命令可以看到 websocket server 的管理命令. 跟 http server 的管理命令一致。
$ php bin/swoft ws
Description:
There some commands for manage the webSocket server
Usage:
ws:{command} [arguments] [options]
Commands:
start Start the webSocket server
stop Stop the running server
restart Restart the running server
Options:
-h, --help Show help of the command group or specified command action
前台运行
php bin/swoft ws:start
后台运行
php bin/swoft ws:start -d
如果你注册了 ws 的路由处理模块,现在就可以通过浏览器等ws客户端连接上server了。
关于 websocket 模块 请观看后续文章 谢谢
来源:https://8code.net/index/index/article/id/48
以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要
PHP进阶架构师>>>视频、面试文档免费获取shimo.im或 者关注咱们下面的知乎专栏
PHP架构师圈子zhuanlan.zhihu.com