diff --git a/src/com/wentch/redkale/net/http/WebSocket.java b/src/com/wentch/redkale/net/http/WebSocket.java index 836d68e1b..f1d4528e3 100644 --- a/src/com/wentch/redkale/net/http/WebSocket.java +++ b/src/com/wentch/redkale/net/http/WebSocket.java @@ -34,6 +34,26 @@ import java.util.concurrent.ConcurrentHashMap; */ public abstract class WebSocket { + //消息不合法 + public static final int RETCODE_SEND_ILLPACKET = 1 << 1; //2 + + //ws已经关闭 + public static final int RETCODE_WSOCKET_CLOSED = 1 << 2; //4 + + //socket的buffer不合法 + public static final int RETCODE_ILLEGALBUFFER = 1 << 3; //8 + + //ws发送消息异常 + public static final int RETCODE_SENDEXCEPTION = 1 << 4; //16 + + public static final int RETCODE_ENGINE_NULL = 1 << 5; //32 + + public static final int RETCODE_NODESERVICE_NULL = 1 << 6; //64 + + public static final int RETCODE_GROUP_EMPTY = 1 << 7; //128 + + public static final int RETCODE_WSOFFLINE = 1 << 8; //256 + WebSocketRunner runner; WebSocketEngine engine; @@ -56,9 +76,11 @@ public abstract class WebSocket { * 发送消息体, 包含二进制/文本 *
* @param packet + * @return */ - public final void send(WebSocketPacket packet) { - if (this.runner != null) this.runner.sendMessage(packet); + public final int send(WebSocketPacket packet) { + if (this.runner != null) return this.runner.sendMessage(packet); + return RETCODE_WSOCKET_CLOSED; } /** @@ -72,9 +94,10 @@ public abstract class WebSocket { * 发送单一的文本消息 *
* @param text 不可为空 + * @return */ - public final void send(String text) { - send(text, true); + public final int send(String text) { + return send(text, true); } /** @@ -82,18 +105,20 @@ public abstract class WebSocket { *
* @param text 不可为空 * @param last 是否最后一条 + * @return */ - public final void send(String text, boolean last) { - send(new WebSocketPacket(text, last)); + public final int send(String text, boolean last) { + return send(new WebSocketPacket(text, last)); } /** * 发送单一的二进制消息 *
* @param data + * @return */ - public final void send(byte[] data) { - send(data, true); + public final int send(byte[] data) { + return send(data, true); } /** @@ -101,9 +126,10 @@ public abstract class WebSocket { *
* @param data 不可为空 * @param last 是否最后一条 + * @return */ - public final void send(byte[] data, boolean last) { - send(new WebSocketPacket(data, last)); + public final int send(byte[] data, boolean last) { + return send(new WebSocketPacket(data, last)); } /** @@ -111,9 +137,10 @@ public abstract class WebSocket { *
* @param message 不可为空, 只能是String或者byte[]
* @param last 是否最后一条
+ * @return
*/
- public final void send(Serializable message, boolean last) {
- send(new WebSocketPacket(message, last));
+ public final int send(Serializable message, boolean last) {
+ return send(new WebSocketPacket(message, last));
}
//----------------------------------------------------------------
@@ -210,12 +237,12 @@ public abstract class WebSocket {
}
private int sendMessage(Serializable groupid, boolean recent, String text, boolean last) {
- if (node == null) return WebSocketNode.RETCODE_NODESERVICE_NULL;
+ if (node == null) return RETCODE_NODESERVICE_NULL;
return node.sendMessage(groupid, recent, text, last);
}
private int sendMessage(Serializable groupid, boolean recent, byte[] data, boolean last) {
- if (node == null) return WebSocketNode.RETCODE_NODESERVICE_NULL;
+ if (node == null) return RETCODE_NODESERVICE_NULL;
return node.sendMessage(groupid, recent, data, last);
}
diff --git a/src/com/wentch/redkale/net/http/WebSocketGroup.java b/src/com/wentch/redkale/net/http/WebSocketGroup.java
index 9d508998c..ffdd1d143 100644
--- a/src/com/wentch/redkale/net/http/WebSocketGroup.java
+++ b/src/com/wentch/redkale/net/http/WebSocketGroup.java
@@ -76,24 +76,29 @@ public final class WebSocketGroup {
attributes.put(name, value);
}
- public final void send(boolean recent, Serializable message, boolean last) {
+ public final int send(boolean recent, Serializable message, boolean last) {
if (recent) {
- recentWebSocket.send(message, last);
+ return recentWebSocket.send(message, last);
} else {
- list.forEach(x -> x.send(message, last));
+ return sendEach(message, last);
}
}
- public final void sendEach(Serializable message, boolean last) {
- list.forEach(x -> x.send(message, last));
+ public final int sendEach(Serializable message, boolean last) {
+ int rs = 0;
+ for (WebSocket s : list) {
+ rs |= s.send(message, last);
+ }
+ return rs;
}
- public final void sendRecent(Serializable message, boolean last) {
- recentWebSocket.send(message, last);
+ public final int sendRecent(Serializable message, boolean last) {
+ return recentWebSocket.send(message, last);
}
@Override
public String toString() {
return "{groupid: " + groupid + ", list.size: " + (list == null ? -1 : list.size()) + "}";
}
+
}
diff --git a/src/com/wentch/redkale/net/http/WebSocketNode.java b/src/com/wentch/redkale/net/http/WebSocketNode.java
index 4437661bd..04205f11f 100644
--- a/src/com/wentch/redkale/net/http/WebSocketNode.java
+++ b/src/com/wentch/redkale/net/http/WebSocketNode.java
@@ -5,6 +5,7 @@
*/
package com.wentch.redkale.net.http;
+import static com.wentch.redkale.net.http.WebSocket.*;
import com.wentch.redkale.net.sncp.*;
import com.wentch.redkale.util.*;
import java.io.*;
@@ -20,14 +21,6 @@ import javax.annotation.*;
*/
public abstract class WebSocketNode {
- public static final int RETCODE_ENGINE_NULL = 5001;
-
- public static final int RETCODE_NODESERVICE_NULL = 5002;
-
- public static final int RETCODE_GROUP_EMPTY = 5005;
-
- public static final int RETCODE_WSOFFLINE = 5011;
-
protected final Logger logger = Logger.getLogger(this.getClass().getSimpleName());
protected final boolean finest = logger.isLoggable(Level.FINEST);
@@ -39,7 +32,7 @@ public abstract class WebSocketNode {
protected WebSocketNode remoteNode;
//存放所有用户分布在节点上的队列信息,Set