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 { public void onPong(byte[] bytes) { } + /** + * 尚未实现~~ + * + * 接收到消息前的拦截方法, ping/pong不在其内
+ * 注意:处理完后需要调用 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");