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);
|
});
|
}
|
}
|
}
|