默认
发表评论 13
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
请教一下WebSocket 如何设计连接鉴权机制
阅读(35026) | 评论(13 收藏 淘帖1
是在建立连接的时候就鉴权鉴权判断是否连接,还是在后续过程中通过webosocket 发送带token的消息。



即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

上一篇:求教IM中用户间聊天问题,发出消息到底用http还是长连接?下一篇:关于IM中消息转发功能里,逐条转发设计的疑问

本帖已收录至以下技术专辑

推荐方案
评论 13
“后续过程中”?你理解的后续过程具体指的是什么?
引用:JackJiang 发表于 2021-12-27 16:03
“后续过程中”?你理解的后续过程具体指的是什么?

我意思 鉴权 是 在http 升级websocket 的时候做,还是创建好链接,第一个发送登录信息,进行鉴权?
引用:crazyerror 发表于 2021-12-27 22:29
我意思 鉴权 是 在http 升级websocket 的时候做,还是创建好链接,第一个发送登录信息,进行鉴权?

创建好链接后再做鉴权应该是更符合简单一些,必竟你要在http握手阶段就做鉴权的话,那还得看你的WebSocket服务端提不提供这种能力。
引用:JackJiang 发表于 2021-12-27 23:21
创建好链接后再做鉴权应该是更符合简单一些,必竟你要在http握手阶段就做鉴权的话,那还得看你的WebSocke ...

创建好 再做鉴权,那么服务器端是否要定时轮询检查那些超时还没鉴权的就踢掉。造成一大堆没有用的连接,我在用netty做后端的时候发现自己实现的WebSocketServerProtocolHandshakeHandler 都是私有的。
引用:JackJiang 发表于 2021-12-27 23:21
创建好链接后再做鉴权应该是更符合简单一些,必竟你要在http握手阶段就做鉴权的话,那还得看你的WebSocke ...

创建好在做鉴权,是否讲连接成功的和以鉴权的分为两个集合,堆成队列或者循环数组,未鉴权的容器,服务端进行下线处理。还是有什么好的处理办法?
引用:crazyerror 发表于 2021-12-28 11:23
创建好在做鉴权,是否讲连接成功的和以鉴权的分为两个集合,堆成队列或者循环数组,未鉴权的容器,服务端 ...

长连接很好管理,不合法的连接立即给出一个返回码(返回码让客户端自已识别,有些连接可能并不是非法的,只是超时或者丢失了身份信息,收到这个码后客户端可以做自动重新认证、连接这些过程)并断开就好了
引用:JackJiang 发表于 2021-12-28 11:46
长连接很好管理,不合法的连接立即给出一个返回码(返回码让客户端自已识别,有些连接可能并不是非法的, ...

这样子是不是每次消息都要判定长连接是否合法?
引用:crazyerror 发表于 2021-12-28 14:40
这样子是不是每次消息都要判定长连接是否合法?

合法的长连接,你肯定在服务端会个会话(或者说连接)管理这个个玩意,已经合法建立的连接那就放心通信啊
引用:JackJiang 发表于 2021-12-28 17:12
合法的长连接,你肯定在服务端会个会话(或者说连接)管理这个个玩意,已经合法建立的连接那就放心通信啊

我现在用netty websocket 的实现 好多是私有的 要自己重写,或者反射插入到建立连接处
引用:crazyerror 发表于 2021-12-29 16:41
我现在用netty websocket 的实现 好多是私有的 要自己重写,或者反射插入到建立连接处

不理你说的“好多是私有的”,这啥意思
引用:JackJiang 发表于 2021-12-30 11:17
不理你说的“好多是私有的”,这啥意思

如果需要在连接的时候进行鉴权 如果用netty 提供的 WebSocketServerProtocolHandler  在WebSocketServerProtocolHandshakeHandler 中的 channelRead 去处理,但是  WebSocketServerProtocolHandshakeHandler  是对外不可见的。
引用:crazyerror 发表于 2022-01-01 21:37
如果需要在连接的时候进行鉴权 如果用netty 提供的 WebSocketServerProtocolHandler  在WebSocketServer ...

你要么去读一下MobileIMSDK 的服务端源码,参考一下:https://github.com/JackJiang2011/MobileIMSDK
引用:JackJiang 发表于 2022-01-02 16:56
你要么去读一下MobileIMSDK  的服务端源码,参考一下:https://github.com/JackJiang2011/MobileIMSDK

谢谢指导
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部