刚学了一下gateway,结合聊天的demo, 参考代码流程写了个程序(不是gateway的,主要是用来调试),模拟注册,websocket以及gateway, 简单分析了一下处理流程,不知道对不对
中间细节还没分析,很多的自定义cmd,标识不同的消息
1.一个gateway包含了(reigisterClient, webSocketServer[对外服务], innerTcpServer[对businessWorker])
2.一个business包含了(registerClient, innerTcpClient[与gateway连接,一个business会链接所有注册的gateway])
一个gateway中的webSocketServer[对外服务], innerTcpServer[对businessWorker],他们在一个进程中一个线程内,所以,各自fd(连接描述符)可以直接使用,他们之前没有io通信。webSocketServer,会根据分组,归并fd(client_id)·
流程大致是gateway中, webSocketServer获取client消息,通过innerTcpServer的(句柄)找一个fd,发给business,bussniess处理消息,(封装返回消息payload,广播给所有gateway中的innserTcpServer,innerTcpServer判断消息是否需要给客户端返回,需要的话,找到和自己一个进程中一个线程内webSocketServer(句柄,以及webSocketServer的fd(或者循环广播),发送给客户端。