多应用模式_ThinkPHP6.0完全开发手册

超详细讲解thinkPHP6+gatewayWorker开发即时通讯,避坑

最近要做一个即时通讯(聊天)功能,本身这个功能挺常见,这篇文章主要是记录自己开发过程中遇到的一些问题,下次要做同样的功能,可以快速开发出来。

技术选择

PHP做即时通讯,选择不多,基本就是 workerman swoole



Swoole 使用 C/C++ 语言编写,提供了 PHP 语言的异步多线程服务器、异步 TCP/UDP 网络客户端、异步 MySQL、异步 Redis、数据库连接池、AsyncTask、消息队列、毫秒定时器、异步文件读写、异步 DNS 查询。 Swoole 内置了 Http/WebSocket 服务器端/客户端、Http2.0 服务器端。

其实挺强大,速度应该也挺快,再看看workerman。

workerman是一款开源高性能PHP应用容器,它大大突破了传统PHP应用范围,被广泛的用于互联网、即时通讯、APP开发、硬件通讯、智能家居、物联网等领域的开发。

workerman 是纯PHP开发的,简单易上手。

Swoole的老大说,Swoole是给高手用的,门槛比较高,需要使用者有深厚的功底。确实比较难上手,比较高傲,所以转头我就选择了好上手的workerman。

不排除还有一些其他好用的即时通讯框架,我就没有去细找了。

官网地址

https://www.workerman.net/

https://www.swoole.com/

安装GatewayWorker

GatewayWorker基于Workerman开发的一个项目框架,用于快速开发TCP长连接应用,例如app推送服务端、即时IM服务端、物联网、智能家居等等,GatewayWorker使用经典的Gateway和Worker进程模型。

https://github.com/walkor/GatewayWorker

可以去这里下载源码,或者去下载一个demo

http://www.workerman.net/download/GatewayWorker.zip

当然,在thinkPHP项目里面直接用下面的命令最好,安装核心依赖

composer require workerman/gateway-worker

以上都是官方的,还有些phper自己也封装了一些,开源出来供大家使用比如think-worker,不过我还是建议直接用官方的比较好,其他phper搞出来的,要么是方便自己的项目封装,做了相应的处理,要么功能会有阉割,还有的是文档不那么全,遇到问题可能是两眼一抹黑。

启动服务

安装完成之后,可以直接运行一下命令(Windows上面不支持

php think worker:gateway 

出现以下界面,说明安装成功

官方手册
https://www.workerman.net/doc/gateway-worker/

注意,启动和停止与官方手册有差别。

守护进程模式:

php think worker:gateway -d

配置

基本上能正常启动服务,接下来就是开发功能了,但是开发前,还需要做一些配置。

安装之后,会在thinkPHP项目配置目录生成一个gateway_worker.php 文件,这个文件就是用来做配置的。

此配置文件有三个需要注意的地方。1,protocol 需要什么协议,可支持的都在后面有备注;2,监听的地址和端口,可以就用默认的,但是要注意在服务器上放开端口;3,eventHandler 事务处理,可以在这个文件里面监听各事件回调,在这里就可以写我们的即时通讯功能了。


客户端

客户端比较简单,直接贴一份很简洁的代码

DOCTYPE html>

<html lang="zh">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=">

<title>Documenttitle>

head>

<body>


<textarea name="" id="txt" cols="" rows="">


textarea>


body>