小弟正在作的一个开源IM项目,目标是实现一个轻量级、高效率的支持聊天与物联网的通信框架。昨天刚刚出的设计稿并再今天作了实现。web
项目是基于Netty的二次开发,关于Netty我这里就再也不介绍了,懂的人天然都懂。个人预算是作一个全部企业或组织能够引用的Maven项目,而且是基本上开箱即用,简单实现对应的配置与重写方法就能够搭建本身的IM项目(某Q、某信的效果)。小程序
本文着重介绍的是登陆接口的设计与实现。服务器
设计思路websocket
关于InChat统一登陆的接口设计,设计针对小程序、APP、Web端的登陆做用,因此将做为token的形式登陆InChat的WebSocket长链接,用户服务器作sso的认证登陆后获得token后直接发送login信息到InChat,用户服务器须要重写InChat中的verifyToken方法校验本身的的Token信息是否有效,正常则启动长链接。考虑到token失效问题,WebSocket长链接的登陆仅作初次登陆,接下来考虑以心跳形式保持连接状态(pingpong),使用token认证是为保护InChat连接的常规化(目前暂时这样设计后面根据使用状况更改设计)框架
因为目前大部分的Web项目或基于IM的项目登陆可能存在多端的单点登陆,因此我选用了Token的形式,为何登陆后还须要用token再来websocket这边校验一次呢?socket
由于你登陆的是web应用程序端的,而websocket而言,只要别人知道你的地址,那么就能够连接上,咱们不但愿存在过多的死连接(无效连接),因此咱们须要将token再次发给InChat登陆,由InChat来检验是不是合法登陆连接,若是无效则关闭连接。ide
代码实现学习
还请各位看官移步GitHub,设计
一、GitHub搜索InChat便可找到小弟项目blog
二、学习资料齐全,正在不断更新文档资料中
三、加入咱们一块儿建设项目与提供建议,有小伙伴和你一块儿学习哦
(QQ群:628793702)
最后,公众代码实现均会在GitHub上,考虑到不方便与显示问题,如今均写思路实现代码。
图片