什么是RocketChat
Rocket.Chat 是特性最丰富的 Slack 开源替代品之一。github仓库地址,主要功能:群组聊天,直接通信,私聊群,桌面通知,媒体嵌入,链接预览,文件上传,语音/视频 聊天,截图等等。Rocket.Chat 原生支持 Windows,Mac OS X ,Linux,iOS 和 Android 平台。Rocket.Chat 通过 hubot 集成了非常流行的服务,比如 GitHub,GitLab,Confluence,JIRA 等等
mendix的Buzz功能分析
主页聊天
发起投票、发消息
消息窗口可以分为组织层(全局)以及各个项目层(数据是相互隔离的,项目层窗口也看不到组织层窗口内容)
回复消息在相应消息的下面(类似论坛帖子)
在具体页面聊天
右侧显示聊天窗口,仅针对当前页面
该窗口的聊天信息在项目层的聊天窗口中展示,并带上链接(关联具体页面)
RocketChat的功能分析
架构
采用MongoDB做数据存储,用Meteor构建的js服务端,可以提供GraphQL API
、REST API
、实时API
的请求方式
功能分析
频道
可以设置频道的自定义字段
- 公共频道:使用渠道进行对整个团队开放的对话。您的团队中的任何人都可以加入频道
频道下面可以创建讨论(邀请部分成员),讨论的内容会显示在频道下
私人团体:私人团体只能通过邀请加入
私聊:1对1
用REST API请求接口
- 注入maven依赖retrofit
1 | <dependency> |
- 请求接口:RequestInterface
1 | /** |
- 请求拦截器增加token信息:AddCookiesInterceptor
1 | /** |
- 发送REST请求:RestMain
1 | /** |
- 运行结果
用实时API请求接口(websocket)
- 注入maven依赖java-websocket客户端
1 | <dependency> |
- 自定义websocket客户端对象:MyWebSocketClient
1 | /** |
- 建立websocket连接:SocketMain
1 | /** |
- 运行结果
考虑是否用RocketChat实现协作连接
Choerodon整合RocketChat带来的问题
用户数据
操作RocketChat必须要有用户授权登陆,如果choerodon通过实时API/RestAPI
去调用RocketChat的数据需要先调用登陆api获取token
如果采用LDAP,那就需要用户同步,这样就担心会和xwiki一样,带来问题
如果采用LDAP,登陆的过程如何整合在choerodon中【如果要在前端建立websocket连接,需要用户密码】
如果不采用LDAP,发消息的用户需要在使用协作连接时后端自动进行rocketChat的用户创建
websocket交互
RocketChat自己的前端是通过建立websocket建立实时数据通道
如果想在choerodon这边做一层封装的话,就得在后端连接RocketChat服务端,然后再做一层webSocket
还可以获取数据的不做封装,发送数据的在后端做一层封装(做额外动作)
拦截接口做通知封装
整合在choerodon中,用户通知等则需要做一层接口拦截,即需要封装rocketchat的请求
服务器资源消耗
需要额外启动RocketChat服务端+MongoDB
Choerodon整合RocketChat带来的好处
存储
相当于只是用RocketChat做一层数据存储,以及增删改查的基础功能,其他都需要choerodon这边做封装
机器人
可以用RocketChat做机器人自动回复等功能