yangys
2024-05-18 cc0bdfb33ef638dfafe3185c92c7076d815e1c9b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package com.qianwen.core.websocket.distribute;
 
import cn.hutool.core.collection.CollectionUtil;
import java.util.List;
import com.qianwen.core.websocket.config.WebSocketMessageSender;
import com.qianwen.core.websocket.holder.WebSocketSessionHolder;
 
 
public interface MessageSender {
    default void doSend(MessageDO messageDO) {
        Boolean needBroadcast = messageDO.getNeedBroadcast();
        String messageText = messageDO.getMessageText();
        List<Object> sessionKeys = messageDO.getSessionKeys();
        if (needBroadcast != null && needBroadcast.booleanValue()) {
            WebSocketMessageSender.broadcast(messageText);
        } else if (CollectionUtil.isNotEmpty(sessionKeys)) {
            for (Object sessionKey : sessionKeys) {
                WebSocketMessageSender.send(sessionKey, messageText);
            }
        } else if (CollectionUtil.isNotEmpty(messageDO.getSessionIds())) {
            WebSocketSessionHolder.getSessions().stream().filter(session -> {
                return messageDO.getSessionIds().contains(session.getId());
            }).forEach(session2 -> {
                WebSocketMessageSender.send(session2, messageText);
            });
        }
    }
}