在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
方案一:广播方案
- Step1: 客户端连接到某个Websocket Server,在该websocket Server中建立userid和session的绑定关系
- Step2: 其它服务或者客户端通过MQ广播消息所有Websocket Server(消息体中带有userid)
- Step3: 所有Websocket Server 根据客户端userid找到对应session, 只有存在userid和session的绑定关系的Websocket Server才发送消息到客户端
代码演示
1.Websocket Server 建立userid和session的绑定关系
2.所有Websocket Server 接收消息并处理
方案二:目标询址方案(推荐)
Id标识有两种实现形式:
- 为唯一的服务名:每一个WebSocketServer生成唯一的服务名(
serviceName="XXX-" + IdUtil.oneId()
)并注册到naocs服务组册中心,uesrid与其绑定,服务适用方使用Feign 或其它RPC调用http://{serviceName}/xxx/xxx
到指定WebSocketServer - 为唯一的IP+端口:每一个WebSocketServer 获取自己IP+端口,uesrid与其绑定,服务调用方使用该IP+端口
代码演示(唯一Id为唯一的服务名的形式)
1.绑定userid和服务名唯一Id的关系(以ApplicationName形式为例)
2.Websocket Server提供的调用接口
3.调用方通过nacos调用目标Websocket Server
最后说一句(求关注!别白嫖!)
如果这篇文章对您有所帮助,或者有所启发的话,求一键三连:点赞、转发、在看。
关注公众号:woniuxgg,在公众号中回复:笔记 就可以获得蜗牛为你精心准备的java实战语雀笔记,回复面试、开发手册、有超赞的粉丝福利!