前言
在原项目中,对于WebSocket的长连接,聊天系统并没有开放接口出来给第三方的系统调用,只有我们系统内部的人员才知道,确切的说系统内部也没有实际的查询接口,那么我们今天就来实现这个功能。
在Netty下的Websocket长连接中,以API形式获取在线用户数,与在线用户列表,并针对某个用户已API调用的形式进行数据发送,而不需要所谓的前端页面去创建websocket连接。
实践流程
存放Channel的容器
首先,我们需要一个类似ChannelGroup的连接池来存放我们的连接实例,这里我直接在原来本地模拟的一个LikeRedisTemplate中新建了一个ConcurrentHashMap,用于存放对应的用户名——连接实例的键值对。
方便后期API调用时可以通过这个LikeRedisTemplate中的这个Map进行获取、删除及相关信息。
/**存放链接池实例*/
private Map ChannelRedisMap = new ConcurrentHashMap<>();
/**
* 存储对应的用户名与Netty链接实例
* @param name 登录用户名
* @param channel Netty链接实例
*/
public void saveChannel(Object name,Object channel){
ChannelRedisMap.put(name,channel);
}
/**
* 获取存储池中的链接实例
* @param name 登录用户名
* @return {