synchronized (HOLDER) {
private static final Map<String, ConnectionInfo> HOLDER = new Hashtable<>();
        // 删除该客户端的所有订阅
        Set<Map.Entry<String, ConnectionInfo>> entries = HOLDER.entrySet();
        entries.stream().filter(new Predicate<Map.Entry<String, ConnectionInfo>>() {
@Override
public boolean test(Map.Entry<String, ConnectionInfo> connectionInfoEntry) {
        return connectionInfoEntry.getValue().getSessions().contains(session);
        }
        }).forEach(new Consumer<Map.Entry<String, ConnectionInfo>>() {
@Override
public void accept(Map.Entry<String, ConnectionInfo> connectionInfoEntry) {
        connectionInfoEntry.getValue().unsubscribe(session);
        }
        });
        Iterator<Map.Entry<String, ConnectionInfo>> iterator = entries.iterator();
        while (iterator.hasNext()) {
        Map.Entry<String, ConnectionInfo> next = iterator.next();
        ConnectionInfo connectionInfo = next.getValue();
        // 若该实体未被订阅  则删除HOLDER中该实体的信息
        if (connectionInfo.unsubscribe(session)) {
        iterator.remove();
        }
        }
       
        }

 

 

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐