From f254519a1c13eb2e3c134868d16a4a9b4e1331a5 Mon Sep 17 00:00:00 2001
From: Redkale <22250530@qq.com>
Date: Thu, 11 Jan 2018 14:28:40 +0800
Subject: [PATCH]
---
src/org/redkale/net/http/RestOnMessage.java | 2 +-
src/org/redkale/net/http/WebSocket.java | 13 +++++++++++++
src/org/redkale/net/http/WebSocketServlet.java | 17 +++++++++++++++++
3 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/src/org/redkale/net/http/RestOnMessage.java b/src/org/redkale/net/http/RestOnMessage.java
index 099b597d5..de2c07160 100644
--- a/src/org/redkale/net/http/RestOnMessage.java
+++ b/src/org/redkale/net/http/RestOnMessage.java
@@ -10,7 +10,7 @@ import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
/**
- * 标记在RestWebSocket的接收消息方法上
+ * 标记在RestWebSocket的接收消息方法上,方法通常是void返回类型
*
*
* 详情见: https://redkale.org
diff --git a/src/org/redkale/net/http/WebSocket.java b/src/org/redkale/net/http/WebSocket.java
index bcf54e2be..c97a656f4 100644
--- a/src/org/redkale/net/http/WebSocket.java
+++ b/src/org/redkale/net/http/WebSocket.java
@@ -694,6 +694,19 @@ public abstract class WebSocket
+ * 注意:处理完后需要调用 messageEvent.run() 才能响应onMessage
+ *
+ * @param restmapping Rest的方法名,没有则为空字符串
+ * @param messageEvent onMessage事件
+ */
+ public void preOnMessage(String restmapping, Runnable messageEvent) {
+ messageEvent.run();
+ }
+
/**
* 接收到消息的回调方法
*
diff --git a/src/org/redkale/net/http/WebSocketServlet.java b/src/org/redkale/net/http/WebSocketServlet.java
index bcc13b401..7622d8d31 100644
--- a/src/org/redkale/net/http/WebSocketServlet.java
+++ b/src/org/redkale/net/http/WebSocketServlet.java
@@ -307,6 +307,23 @@ public abstract class WebSocketServlet extends HttpServlet implements Resourcabl
return null;
}
+ //供Rest构建RestWebSocket时使用
+ protected static interface MessageEventRunner extends Runnable {
+
+ public void execute() throws Throwable;
+
+ @Override
+ default void run() {
+ try {
+ execute();
+ } catch (RuntimeException e) {
+ throw e;
+ } catch (Throwable t) {
+ throw new RuntimeException(t);
+ }
+ }
+ }
+
private static MessageDigest getMessageDigest() {
try {
return MessageDigest.getInstance("SHA-1");