这套proto
是https://github.com/buexplain/netsvr的网关层与业务层的交互协议。
指令有如下三种类别:
- 网关单向转发给业务进程的指令
- 业务进程单向请求网关的指令
- 业务进程请求网关,网关处理完毕再响应给业务进程的指令
名称 | 编号 | proto | 说明 |
---|---|---|---|
websocket连接打开 | ConnOpen | connOpen.proto | 网关转发客户端连接打开的信息到业务进程 |
websocket连接关闭 | ConnClose | connClose.proto | 网关转发客户端连接关闭的信息到业务进程 |
透传客户端的websocket数据 | Transfer | transfer.proto | 网关转发客户端连接发来的数据到业务进程 |
名称 | 编号 | proto | 说明 |
---|---|---|---|
更新连接的信息 | ConnInfoUpdate | connInfoUpdate.proto | 每个客户端连接都可以在网关中存储:业务系统唯一id、订阅的主题标签、session信息,该指令用于设置这些信息 |
删除连接的信息 | ConnInfoDelete | connInfoDelete.proto | 删除客户连接的:业务系统唯一id、订阅的主题标签、session信息 |
广播 | Broadcast | broadcast.proto | 给网关中所有客户端连接都发送一条信息 |
根据uniqId组播 | Multicast | multicast.proto | 给指定的某几个客户端连接发送一条信息 |
根据customerId组播 | MulticastByCustomerId | multicastByCustomerId.proto | 给指定的某几个客户端id发送一条信息 |
根据uniqId单播 | SingleCast | singleCast.proto | 给指定的某个客户连接发送一条信息 |
根据uniqId批量单播 | SingleCastBulk | singleCastBulk.proto | 将多对单播数据打包成一个块,一次性发送给网关 |
根据customerId单播 | SingleCastByCustomerId | singleCastByCustomerId.proto | 给指定的某个客户端id发送一条信息 |
根据customerId批量单播 | SingleCastBulkByCustomerId | singleCastBulkByCustomerId.proto | 将多对单播数据打包成一个块,一次性发送给网关 |
订阅某几个主题 | TopicSubscribe | topicSubscribe.proto | 客户端连接订阅某几个主题的数据,比如客户端加入的群的id,用于接收该群的消息 |
取消订阅某几个主题 | TopicUnsubscribe | topicUnsubscribe.proto | 客户端连取消订阅某几个主题的数据,比如客户端退群了,可以将之前订阅的群id删除 |
删除某几个主题 | TopicDelete | topicDelete.proto | 删除网关中某几个主题,所有订阅了这些被删除主题的客户端连接都会取消订阅它们 |
给某几个主题发布信息 | TopicPublish | topicPublish.proto | 一份消息发布到多个主题 |
批量发布到某几个主题 | TopicPublishBulk | topicPublishBulk.proto | 多份消息发布到多个主题,或者多份消息发布到一个主题 |
强制关闭某几个连接 | ForceOffline | forceOffline.proto | 根据uniqId,强制关闭某几个客户端连接,比如客户在多个设备连接到网关,则可用此指令去强制关闭客户其它设备的连接 |
强制关闭某几个客户的所有连接 | ForceOfflineByCustomerId | forceOfflineByCustomerId.proto | 根据customerId强制关闭某个客户连接,一般是剔下线用,该客户在所有设备登录到网关的所有连接都会被关闭 |
强制关闭某几个空session、空customerId的连接 | ForceOfflineGuest | forceOfflineGuest.proto | 强制关闭某个空session值与空customerId的连接,比如客户端连接到网关,但是并没有发起账号密码登录的请求,此时业务侧又不希望此类连接一直逗留在网关中,则可以用该指令去延迟一分钟后强制关闭它,当然如果一分钟后,客户端登录成功,则不会关闭 |