package ink.wgink.interfaces.manager; import ink.wgink.exceptions.websocket.SessionException; import ink.wgink.pojo.session.WebSocketSession; import io.netty.channel.Channel; import java.util.List; /** * @ClassName: IRedisWebSocketChannelManager * @Description: redis websocket channel 管理器 * @Author: wanggeng * @Date: 2021/11/29 5:57 下午 * @Version: 1.0 */ public interface IWebSocketUserSessionManager { String CHANNEL_HASH_KEY = "websocket:channels"; /** * 初始化 * * @param userId * @param sessionId * @param clientName */ void init(String userId, String sessionId, String clientName); /** * 添加通道 * * @param sessionId * @param userId * @param channel * @return * @throws SessionException */ WebSocketSession addChannel(String sessionId, String userId, Channel channel) throws SessionException; /** * 删除通道 * * @param channel */ void removeChannel(Channel channel); /** * 在线会话列表 * * @param userId 用户ID * @return */ List listOnlineUser(String userId); /** * 在线会话 * * @param userId 用户ID * @param clientName 客户端名称 * @return */ List listOnlineUser(String userId, String clientName); /** * 在线会话列表 * * @param userIds 用户ID列表 * @return */ List listOnlineUser(List userIds); /** * 在线会话列表 * * @param userIds 用户ID * @param clientName 客户端名称 * @return */ List listOnlineUser(List userIds, String clientName); /** * 在线用户 * * @param sessionId 会话ID * @return */ WebSocketSession getOnlineUserBySessionId(String sessionId); /** * 通过通道获取用户 * * @param channelId * @return */ WebSocketSession getOnlineUserByChannelId(String channelId); }