From b7849931107645d75fa0d6bb2578b1374a81434d Mon Sep 17 00:00:00 2001 From: Redkale <22250530@qq.com> Date: Fri, 20 Oct 2017 10:45:56 +0800 Subject: [PATCH] =?UTF-8?q?WebSocket=E7=9A=84sendMessage=E7=B3=BB=E5=88=97?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E5=A2=9E=E5=8A=A0Stream=20userids=E5=8F=82?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/org/redkale/net/http/WebSocket.java | 59 +++++++++++++++++- src/org/redkale/net/http/WebSocketEngine.java | 10 +++ src/org/redkale/net/http/WebSocketNode.java | 62 +++++++++++++++++++ 3 files changed, 130 insertions(+), 1 deletion(-) 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是远程模式,此方法只发送远程连接