创建自定义服务
除了模块自带的 HTTP
和 WebSocket
服务,您还可以创建自定义服务(模块开发者亦可创建模块专用服务),创建步骤如下:
- 检查
config/worker_*.php
配置文件,确定已有服务不能满足需求 - 通读 Workerman 或 GatewayWorker 文档,不然你大概率不知道你在干什么
- 确定您的自定义服务需要启动那些进程,比如内置的
ws
服务启动了BusinessWorker、Register、Gateway
三种进程,您可以参考 GatewayWorker 的工作原理文档,确定一个服务标识,ws、http
已被占用,下文使用custom
代替。 - 于
modules/workerman/servers/
目录内,新建custom
文件夹,其中为每种进程建立一个进程启动文件,一定要先参考已有的ws
和http
目录中的文件,或直接复制后修改,在进程启动文件中引入了对应的配置文件,是否为您的自定义服务建立配置文件请随意,在这些配置中,具有eventHandler(回调类命名空间)
等配置项,很关键。 - 若您的服务需要在
Windows
下也可以启动以便调试,请于modules/workerman/commands/worker_start_for_win/
目录内,建立新的custom
文件夹,和上一步类似,一个进程一个启动文件,win下不支持多进程,只能建立多个文件然后同时执行,继续创建custom_worker_start_for_win.bat
文件,其中内容参考已有的bat
文件即可。 - 您在第4步已经配置好了回调类命名空间,此时继续建立对应的回调类,当前已有的回调类是:
app/worker/events/Http.php、app/worker/events/WsBusiness.php
,其中注册了onWorkerStart、onMessage
等方法。 - 在回调类中,还实例化了
app/worker/library/WorkerHttpApp.php
或者app/worker/library/WorkerWsApp.php
,是否需要为您的应用自定义App
,请结合实际需求决定。 - 整个新建服务的过程并不复杂,您会发现其实整个
workerman
模块文件都很少,建立新服务时请多映照已有服务和workerman
官方文档即可。 - 对于模块开发者而言,以上文件全部按结构打包至模块包内即可(不要打包
workerman
模块本身,只打包新建服务相关文件,BuildAdmin
市场会提醒用户先安装workerman
模块,然后再安装您的模块时,系统将新的服务文件覆盖到对应目录,自然就能使用了)。