diff --git a/src/org/redkale/net/http/WebSocket.java b/src/org/redkale/net/http/WebSocket.java index 78ece1cf1..c8314db9b 100644 --- a/src/org/redkale/net/http/WebSocket.java +++ b/src/org/redkale/net/http/WebSocket.java @@ -231,6 +231,18 @@ public abstract class WebSocket { } //---------------------------------------------------------------- + /** + * 给指定userid的WebSocket节点发送 二进制消息/文本消息/JavaBean对象消息 + * + * @param message 不可为空 + * @param userids Stream + * + * @return 为0表示成功, 其他值表示异常 + */ + public final CompletableFuture sendMessage(Object message, Stream userids) { + return sendMessage(message, true, userids); + } + /** * 给指定userid的WebSocket节点发送 二进制消息/文本消息/JavaBean对象消息 * @@ -243,6 +255,19 @@ public abstract class WebSocket { return sendMessage(message, true, userids); } + /** + * 给指定userid的WebSocket节点发送 二进制消息/文本消息/JavaBean对象消息 + * + * @param convert Convert + * @param message 不可为空 + * @param userids Stream + * + * @return 为0表示成功, 其他值表示异常 + */ + public final CompletableFuture sendMessage(final Convert convert, Object message, Stream userids) { + return sendMessage(convert, message, true, userids); + } + /** * 给指定userid的WebSocket节点发送 二进制消息/文本消息/JavaBean对象消息 * @@ -256,6 +281,19 @@ public abstract class WebSocket { return sendMessage(convert, message, true, userids); } + /** + * 给指定userid的WebSocket节点发送 二进制消息/文本消息/JavaBean对象消息 + * + * @param message 不可为空 + * @param last 是否最后一条 + * @param userids Serializable[] + * + * @return 为0表示成功, 其他值表示异常 + */ + public final CompletableFuture sendMessage(Object message, boolean last, Stream userids) { + return sendMessage((Convert) null, message, last, userids); + } + /** * 给指定userid的WebSocket节点发送 二进制消息/文本消息/JavaBean对象消息 * @@ -269,6 +307,25 @@ public abstract class WebSocket { return sendMessage((Convert) null, message, last, userids); } + /** + * 给指定userid的WebSocket节点发送 二进制消息/文本消息/JavaBean对象消息 + * + * @param convert Convert + * @param message 不可为空 + * @param last 是否最后一条 + * @param userids Stream + * + * @return 为0表示成功, 其他值表示异常 + */ + public final CompletableFuture sendMessage(final Convert convert, Object message, boolean last, final Stream userids) { + Object[] array = userids.toArray(); + Serializable[] ss = new Serializable[array.length]; + for (int i = 0; i < array.length; i++) { + ss[i] = (Serializable) array[i]; + } + return sendMessage(convert, message, last, ss); + } + /** * 给指定userid的WebSocket节点发送 二进制消息/文本消息/JavaBean对象消息 * @@ -279,7 +336,7 @@ public abstract class WebSocket { * * @return 为0表示成功, 其他值表示异常 */ - public final CompletableFuture sendMessage(final Convert convert, Object message, boolean last, G... userids) { + public final CompletableFuture sendMessage(final Convert convert, Object message, boolean last, Serializable... userids) { if (_engine.node == null) return CompletableFuture.completedFuture(RETCODE_NODESERVICE_NULL); if (message instanceof CompletableFuture) { return ((CompletableFuture) message).thenCompose((json) -> _engine.node.sendMessage(convert, json, last, userids)); diff --git a/src/org/redkale/net/http/WebSocketEngine.java b/src/org/redkale/net/http/WebSocketEngine.java index 3912c3069..13cb56553 100644 --- a/src/org/redkale/net/http/WebSocketEngine.java +++ b/src/org/redkale/net/http/WebSocketEngine.java @@ -201,6 +201,16 @@ public class WebSocketEngine { } } + @Comment("给指定用户组发送消息") + public CompletableFuture sendMessage(final Object message, final boolean last, final Stream userids) { + Object[] array = userids.toArray(); + Serializable[] ss = new Serializable[array.length]; + for (int i = 0; i < array.length; i++) { + ss[i] = (Serializable) array[i]; + } + return sendMessage(message, last, ss); + } + @Comment("给指定用户组发送消息") public CompletableFuture sendMessage(final Object message, final boolean last, final Serializable... userids) { if (message instanceof CompletableFuture) { diff --git a/src/org/redkale/net/http/WebSocketNode.java b/src/org/redkale/net/http/WebSocketNode.java index e06e1cfd2..1fb2906df 100644 --- a/src/org/redkale/net/http/WebSocketNode.java +++ b/src/org/redkale/net/http/WebSocketNode.java @@ -11,6 +11,7 @@ import java.net.*; import java.util.*; import java.util.concurrent.*; import java.util.logging.*; +import java.util.stream.Stream; import javax.annotation.*; import org.redkale.boot.*; import org.redkale.convert.*; @@ -222,6 +223,19 @@ public abstract class WebSocketNode { return this.localEngine; } + /** + * 向指定用户发送消息,先发送本地连接,再发送远程连接
+ * 如果当前WebSocketNode是远程模式,此方法只发送远程连接 + * + * @param message 消息内容 + * @param userids Stream + * + * @return 为0表示成功, 其他值表示部分发送异常 + */ + public final CompletableFuture sendMessage(Object message, final Stream userids) { + return sendMessage((Convert) null, message, true, userids); + } + /** * 向指定用户发送消息,先发送本地连接,再发送远程连接
* 如果当前WebSocketNode是远程模式,此方法只发送远程连接 @@ -235,6 +249,20 @@ public abstract class WebSocketNode { return sendMessage((Convert) null, message, true, userids); } + /** + * 向指定用户发送消息,先发送本地连接,再发送远程连接
+ * 如果当前WebSocketNode是远程模式,此方法只发送远程连接 + * + * @param convert Convert + * @param message 消息内容 + * @param userids Stream + * + * @return 为0表示成功, 其他值表示部分发送异常 + */ + public final CompletableFuture sendMessage(final Convert convert, Object message, final Stream userids) { + return sendMessage(convert, message, true, userids); + } + /** * 向指定用户发送消息,先发送本地连接,再发送远程连接
* 如果当前WebSocketNode是远程模式,此方法只发送远程连接 @@ -249,6 +277,20 @@ public abstract class WebSocketNode { return sendMessage(convert, message, true, userids); } + /** + * 向指定用户发送消息,先发送本地连接,再发送远程连接
+ * 如果当前WebSocketNode是远程模式,此方法只发送远程连接 + * + * @param message 消息内容 + * @param last 是否最后一条 + * @param userids Stream + * + * @return 为0表示成功, 其他值表示部分发送异常 + */ + public final CompletableFuture sendMessage(final Object message, final boolean last, final Stream userids) { + return sendMessage((Convert) null, message, last, userids); + } + /** * 向指定用户发送消息,先发送本地连接,再发送远程连接
* 如果当前WebSocketNode是远程模式,此方法只发送远程连接 @@ -263,6 +305,26 @@ public abstract class WebSocketNode { return sendMessage((Convert) null, message, last, userids); } + /** + * 向指定用户发送消息,先发送本地连接,再发送远程连接
+ * 如果当前WebSocketNode是远程模式,此方法只发送远程连接 + * + * @param convert Convert + * @param message0 消息内容 + * @param last 是否最后一条 + * @param userids Stream + * + * @return 为0表示成功, 其他值表示部分发送异常 + */ + public final CompletableFuture sendMessage(final Convert convert, final Object message0, final boolean last, final Stream userids) { + Object[] array = userids.toArray(); + Serializable[] ss = new Serializable[array.length]; + for (int i = 0; i < array.length; i++) { + ss[i] = (Serializable) array[i]; + } + return sendMessage(convert, message0, last, ss); + } + /** * 向指定用户发送消息,先发送本地连接,再发送远程连接
* 如果当前WebSocketNode是远程模式,此方法只发送远程连接