workerman 3.0 和2.0 架构的主要差异点和注意事项是什么?

tairen

同题,同时2.0如何升级到3.0

4119 3 0
3个回答

walkor

2.x 和 3.x架构上没有差异

主要是workerman内核部分重新写了,目录结构有变动

Gateway/Worker的所有接口没有变动,Gatway/Worker协议处理上有变动,原来2.x是需要在Worker进程中的Event.php中解析协议,3.x统一由Gateway进程解析协议,然后传递解析好的数据给Event.php,业务不在关心协议打包解包问题

2.x开发的项目一般不用考虑升级到3.x。

新项目开发可以考虑3.x,因为开发起来更简单,具体开发流程看参考3.x手册
http://doc3.workerman.net/index.html

  • 暂无评论
1985944782

workerman 老大, 有个问题我不大明白。

在3.0上,手册上说基于Worker方式不能实现客户端和客户端之间通信;而基于Gateway/Worker是可以实现客户端之间通信。

这里所谓的客户端通讯,我理解就是在Gateway/Worker上,一个客户端先发消息给服务端,然后服务端再响应的发送给另外一个客户端,或则全部连接上的客户端。对吗??

如果是这样,那么Woker方式,不是也可以把所有已经连接上的Connection都保存起来(Array),然后在需要的时候,通过遍历这个Array做分发? 这不是也算客户端通讯??

谢谢

  • 暂无评论
walkor

这里所谓的客户端通讯,我理解就是在Gateway/Worker上,一个客户端先发消息给服务端,然后服务端再响应的发送给另外一个客户端,或则全部连接上的客户端。对吗??

对的

如果是这样,那么Woker方式,不是也可以把所有已经连接上的Connection都保存起来(Array),然后在需要的时候,通过遍历这个Array做分发? 这不是也算客户端通讯??

单进程是可以这样做的(见手册的小例子:http://doc3.workerman.net/development/process.html),但是多进程的话,比如客户端A连的是进程1,客户端B连的是进程2,当A要通过Worker给B发送数据时,A只能发给Worker进程1,但是Worker进程1却无法发给B连接,因为B连接是属于Worker进程2的

年代过于久远,无法发表回答
🔝