skynet 网关

网关服务相关代码 watch_dog gate agent gateserver

 

启动:

1.启动watch_dog服务,watch_dog 启动 gate服务。

2.执行watch_dog start 服务,向其传入conf。watch_dog 通知 gate 执行open 命令传入conf。gate 开始lisent。

 

接受客户端连接:

1.gate 收到新的连接,通知watch_dog.

2.watch_dog启动一个agent 服务,调用 agent start,传入gate , client , watchdog

3.agent 通知 gate执行forward,建立agent 和 connect的映射(gate收到client的数据可以通过这个映射直接转发到agent)

 

 

接受客户端数据:

gate 接受到数据,如果connect 有agent,那么直接redirect消息到agent。如果没有agent send(tostring(msg))到watch_dog

 

客户端关闭连接:

1.gate收到断开连接,清除connnect数据。unforward接触agent 和 connect的映射。发送close消息到watch_dog

2.watch_dog通知gate kick,通知agent disconnect

3.gate 收到kick,close(fd)

4.agent收到disconnect,exit server

 

总结:

watchdog主要负责gate的创建,agent的创建与退出。

gate主要负责的是client连接创建与断开以及接受到消息转发给agent。

agent主要负责接受gate转发的请求,发送心跳,处理业务,然后直接把应答发送给client。

watchdog,gate可以直接使用,agent我们需要定义自己的包体的解析和打包,以及收到消息包的分发处理。

 

 

注意:skynet自带的网关服务,是以大端进行编码。前两个字节为包体长度。只要符合这种编码格式,就可以使用网关的编码和解码。网关自带了缺包和粘包的处理在netpack.filter中。

在agent中收到的msg和sz是包体的数据,去除了两个字节的包体长度。

 

下一篇将介绍protobuf的接入,自定义agent的封包,解包,消息的分发处理。

 

 

 

 

 

 

 

发布了45 篇原创文章 · 获赞 4 · 访问量 4万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章