EndPoint: 消息收发点(对应到一个玩家的聊天,或者一个联盟聊天)
PubSub: 对任意EndPoint进行发布,订阅
聊天服务器并不关心一个EndPoint对应的是一个玩家,还是一个联盟,只需要一个独立的id(snowflake-id)。
通常在玩家注册的时候,会创建一个EndPoint,创建一个联盟的时候,也会创建一个EndPoint。
玩家登陆后,会订阅到自己的私人EndPoint和所属联盟的EndPoint,以便接受实时聊天消息。
CHAT会保留一定数量的消息在内存中(默认128条),这个消息队列会定期持久化到本地磁盘,以便重启时候加载。
持久化采用boltdb,零配置, 数据存储在 /data, docker启动的时候,需要绑定到外部目录。
基于PubSub的聊天服务器,优点在于可以通过多个途径同时访问到同一个EndPoint, 例如:
- 游戏内
- 游戏提供的离线聊天工具
- 提供给XMPP网关
参考测试用例以及chat.proto文件
参考Dockerfile
NSQD_HOST: eg : http://172.17.42.1:4151