开源IM项目-InChat登录接口设计与实现(基于Netty)
小弟正在做的一个开源IM项目,目标是实现一个轻量级、高效率的支持聊天与物联网的通讯框架。昨天刚刚出的设计稿并再今天做了实现。
项目是基于Netty的二次开发,关于Netty我这里就不再介绍了,懂的人自然都懂。我的预算是做一个所有企业或组织可以引用的Maven项目,并且是基本上开箱即用,简单实现对应的配置与重写方法就可以搭建自己的IM项目(某Q、某信的效果)。
本文着重介绍的是登录接口的设计与实现。
设计思路
关于InChat统一登录的接口设计,设计针对小程序、APP、Web端的登录作用,所以将作为token的形式登录InChat的WebSocket长连接,用户服务器做sso的认证登录后得到token后直接发送login信息到InChat,用户服务器需要重写InChat中的verifyToken方法校验自己的的Token信息是否有效,正常则启动长连接。考虑到token失效问题,WebSocket长连接的登录仅做初次登录,接下来考虑以心跳形式保持链接状态(pingpong),使用token认证是为保护InChat链接的常规化(目前暂时这样设计后面根据使用情况更改设计)
由于目前大部分的Web项目或基于IM的项目登录可能存在多端的单点登录,所以我选用了Token的形式,为什么登录后还需要用token再来websocket这边校验一次呢?
因为你登录的是web应用程序端的,而websocket而言,只要别人知道你的地址,那么就可以链接上,我们不希望存在过多的死链接(无效链接),所以我们需要将token再次发给InChat登录,由InChat来检验是否是合法登录链接,如果无效则关闭链接。
代码实现
还请各位看官移步GitHub,
1、GitHub搜索InChat即可找到小弟项目
2、学习资料齐全,正在不断更新文档资料中
3、加入我们一起建设项目与提供建议,有小伙伴和你一起学习哦
(QQ群:628793702)
最后,公众代码实现均会在GitHub上,考虑到不方便与显示问题,现在均写思路实现代码。
图片
- IM 开源项目 群组服务 缓存设计实现之 群组属性
- IM 开源项目 群组服务 缓存设计实现之 成员属性
- 基于FPGA的以太网MII接口扩展设计与实现
- 应用J2EE构建项目登录方式的改进设计与实现
- CSDN开源夏令营 基于Compiz的switcher插件设计与实现之compiz特效插件介绍及特效实现
- 应用J2EE构建项目登录方式的改进设计与实现
- JSF项目中实现基于RBAC模型的权限管理设计
- HoverTree开源项目已经实现管理员登录
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(七):GDAL C#接口库的编译与SharpMap(Change Set 21021)对影像的支持研究
- 基于.NET平台的分层架构实战(五)——接口的设计与实现
- 基于.NET平台的分层架构实战(五)——接口的设计与实现
- IM 开源项目 群组服务 数据库设计-数据库访问 (04)
- 2.基于Spring的应用程序的设计和实现(接口驱动设计)
- 基于SMPP协议的GSM短消息增值业务接口设计与实现
- 设计基于HTML5的APP登录功能及安全调用接口的方式(原理篇)
- 应用J2EE构建项目登录方式的改进设计与实现
- 基于.NET平台的分层架构实战(五)——接口的设计与实现
- 基于事件的监听,消息订阅设计模式的实现框架,ERP,OA,复杂,灵活多变的项目的福音
- 基于.NET平台的分层架构实战(五)——接口的设计与实现
- 应用J2EE构建项目登录方式的改进设计与实现