FishChat(鱼传——鱼传尺素),是一款纯 golang 编写优秀的即时通讯软件(IM), 它集合了市面上已有产品的优点, 并具备 智能硬件网关管理(学习QQ物联思想, 构思中)。
FishChat Android 客户端见 [https://github.com/oikomi/FishChatAndroid](https://github.com/oikomi/FishChatAndroid) (紧张开发中)
**系统架构**
![image](http://static.oschina.net/uploads/img/201505/06105317_sY7b.png)
**关键服务器详解**
**gateway**
gateway server主要是接受client请求,进行通用的功能设置,目前这块只做了分配msg_server的功能,后面可根据需要进行扩展
在gateway server的配置文件中最重要的是配置msg_server列表
<pre class="brush:cpp ;toolbar: true; auto-links: false;">"MsgServerList" : [
"192.168.159.169:19000",
"192.168.159.169:19001"
],</pre>
###
**msg_server**
msg_server是消息的主体,维护着客户端连接和keeplive,同时要注意router、manager和monitor都订阅了msg_server的channel
<pre class="brush:cpp ;toolbar: true; auto-links: false;"> SYSCTRL_CLIENT_STATUS = "/sysctrl/client-status"
SYSCTRL_TOPIC_STATUS = "/sysctrl/topic-status"
SYSCTRL_TOPIC_SYNC = "/sysctrl/topic-sync"
SYSCTRL_SEND = "/sysctrl/send"
SYSCTRL_MONITOR = "/sysctrl/monitor"</pre>
这些channel保证了msg_server在事件触发时会广播通知后面的router、manager和monitor服务
###
**router**
router顾名思义是做了msg_server之间的消息转发
###
**manager**
manager主要是管理client信息存储、离线消息存储等等,通过它和redis联系
###
**monitor**
monitor主要是收集监控各服务器状态信息,目前monitor是可选项,可按需要启动它
**部署**
FishChatServer采用分布式可伸缩部署方式。如果没有多机条件,可以单机部署:
建议:
单机测试部署
*
gateway一台
*
msg_server两台
*
router一台
*
manager一台
*
monitor一台
./gateway
./msg_server -conf_file=msg_server.19001.json
./msg_server -conf_file=msg_server.19000.json
./router
./manager
./monitor
按上面的默认启动方式,查看系统的监听端口如下[![image](http://static.oschina.net/uploads/img/201505/06105319_nbUy.png)](https://github.com/oikomi/FishChatServer/blob/master/docs/pics/listen_port.png)
当然你可以修改各文件夹下面的json配置文件修改配置参数