From 8db5ff286ac4a4b0f04b89f499f975999bceebc0 Mon Sep 17 00:00:00 2001 From: wentch <22250530@qq.com> Date: Tue, 19 Jan 2016 11:21:00 +0800 Subject: [PATCH] --- src/org/redkale/net/http/WebSocket.java | 54 ++++++++++--------- src/org/redkale/net/http/WebSocketBinary.java | 2 +- 2 files changed, 31 insertions(+), 25 deletions(-) diff --git a/src/org/redkale/net/http/WebSocket.java b/src/org/redkale/net/http/WebSocket.java index 60c3b359d..f533633d0 100644 --- a/src/org/redkale/net/http/WebSocket.java +++ b/src/org/redkale/net/http/WebSocket.java @@ -94,13 +94,6 @@ public abstract class WebSocket { return rs; } - /** - * 显式地关闭WebSocket - */ - public final void close() { - if (this._runner != null) this._runner.closeRunner(); - } - /** * 发送单一的文本消息 * @@ -122,16 +115,6 @@ public abstract class WebSocket { return send(new WebSocketPacket(text, last)); } - /** - * 发送单一的二进制消息 - * - * @param data byte[] - * @return 0表示成功, 非0表示错误码 - */ - public final int send(byte[] data) { - return send(data, true); - } - public final int sendPing() { //if (_engine.finest) _engine.logger.finest(this + " on "+_engine.getEngineid()+" ping..."); return send(WebSocketPacket.DEFAULT_PING_PACKET); @@ -149,6 +132,16 @@ public abstract class WebSocket { return createtime; } + /** + * 发送单一的二进制消息 + * + * @param data byte[] + * @return 0表示成功, 非0表示错误码 + */ + public final int send(byte[] data) { + return send(data, true); + } + /** * 发送二进制消息 * @@ -219,7 +212,7 @@ public abstract class WebSocket { } /** - * 给指定groupid的WebSocketGroup下最近活跃的WebSocket节点发送文本消息 + * 给指定groupid的WebSocketGroup下最近接入的WebSocket节点发送文本消息 * * @param groupid groupid * @param text 不可为空 @@ -230,7 +223,7 @@ public abstract class WebSocket { } /** - * 给指定groupid的WebSocketGroup下最近活跃的WebSocket节点发送二进制消息 + * 给指定groupid的WebSocketGroup下最近接入的WebSocket节点发送二进制消息 * * @param groupid groupid * @param data 不可为空 @@ -241,7 +234,7 @@ public abstract class WebSocket { } /** - * 给指定groupid的WebSocketGroup下最近活跃的WebSocket节点发送文本消息 + * 给指定groupid的WebSocketGroup下最近接入的WebSocket节点发送文本消息 * * @param groupid groupid * @param text 不可为空 @@ -253,7 +246,7 @@ public abstract class WebSocket { } /** - * 给指定groupid的WebSocketGroup下最近活跃的WebSocket节点发送二进制消息 + * 给指定groupid的WebSocketGroup下最近接入的WebSocket节点发送二进制消息 * * @param groupid groupid * @param data 不可为空 @@ -359,7 +352,7 @@ public abstract class WebSocket { } /** - * 获取客户端真实地址 + * 获取客户端真实地址 同 HttpRequest.getRemoteAddr() * * @return String */ @@ -387,13 +380,18 @@ public abstract class WebSocket { return _engine.getWebSocketGroup(groupid); } + /** + * 获取当前进程节点所有在线的WebSocketGroup + * + * @return + */ protected final Collection getWebSocketGroups() { return _engine.getWebSocketGroups(); } //------------------------------------------------------------------- /** - * 返回sessionid, null表示连接不合法或异常 + * 返回sessionid, null表示连接不合法或异常,默认实现是request.getSessionid(false),通常需要重写该方法 * * @param request HttpRequest * @return sessionid @@ -403,13 +401,14 @@ public abstract class WebSocket { } /** - * 创建groupid, null表示异常 + * 创建groupid, null表示异常, 必须实现该方法, 通常为用户ID为groupid * * @return groupid */ protected abstract Serializable createGroupid(); /** + * 标记为WebSocketBinary才需要重写此方法 * * @param channel 请求连接 */ @@ -440,6 +439,13 @@ public abstract class WebSocket { public void onClose(int code, String reason) { } + /** + * 显式地关闭WebSocket + */ + public final void close() { + if (this._runner != null) this._runner.closeRunner(); + } + @Override public String toString() { return "ws" + Objects.hashCode(this) + "@" + _remoteAddr; diff --git a/src/org/redkale/net/http/WebSocketBinary.java b/src/org/redkale/net/http/WebSocketBinary.java index c565e8f7a..30590f2b4 100644 --- a/src/org/redkale/net/http/WebSocketBinary.java +++ b/src/org/redkale/net/http/WebSocketBinary.java @@ -10,7 +10,7 @@ import static java.lang.annotation.ElementType.*; import static java.lang.annotation.RetentionPolicy.RUNTIME; /** - * 被标记为 @WebSocketBinary 的WebSocketServlet 将使用原始的TCP传输, 通常用于类似音频/视频传输场景 + * 被标记为 @WebSocketBinary 的WebSocketServlet 将使用原始的TCP传输, 通常用于类似音频/视频传输场景 * *

详情见: http://www.redkale.org * @author zhangjx