WebSocket实现preOnMessage功能
This commit is contained in:
@@ -5,7 +5,8 @@
|
||||
*/
|
||||
package org.redkale.test.ws;
|
||||
|
||||
import java.util.Map;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import javax.annotation.Resource;
|
||||
@@ -42,4 +43,13 @@ public class ChatWebSocket extends WebSocket<Integer, Object> {
|
||||
System.out.println("加入房间: roomid: " + roomid);
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Throwable {
|
||||
|
||||
Method method = Arrays.asList(Rest.class.getDeclaredMethods())
|
||||
.stream().filter(m -> "createRestWebSocketServlet".equals(m.getName()))
|
||||
.findFirst().get();
|
||||
method.setAccessible(true);
|
||||
System.out.println(method.invoke(null, Thread.currentThread().getContextClassLoader(), ChatWebSocket.class));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import java.io.Serializable;
|
||||
import java.util.Map;
|
||||
import java.util.function.BiConsumer;
|
||||
import javax.annotation.Resource;
|
||||
import org.redkale.convert.ConvertDisabled;
|
||||
import org.redkale.convert.json.JsonConvert;
|
||||
import org.redkale.net.http.*;
|
||||
import org.redkale.test.ws.ChatMessage;
|
||||
@@ -50,9 +51,9 @@ public final class _DyncChatWebSocketServlet extends WebSocketServlet {
|
||||
|
||||
public static class _DyncChatWebSocketMessage {
|
||||
|
||||
public _DyncChatWebSocketMessage_sendmessagee sendmessage;
|
||||
public _DyncChatWebSocketMessage_sendmessagee_00 sendmessage;
|
||||
|
||||
public _DyncChatWebSocketMessage_joinroom joinroom;
|
||||
public _DyncChatWebSocketMessage_joinroom_01 joinroom;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
@@ -60,22 +61,61 @@ public final class _DyncChatWebSocketServlet extends WebSocketServlet {
|
||||
}
|
||||
}
|
||||
|
||||
public static class _DyncChatWebSocketMessage_sendmessagee {
|
||||
public static class _DyncChatWebSocketMessage_sendmessagee_00 implements WebSocketParam, Runnable {
|
||||
|
||||
public ChatMessage message;
|
||||
|
||||
public Map<String, String> extmap;
|
||||
|
||||
@ConvertDisabled
|
||||
public _DyncChatWebSocket _redkale_websocket;
|
||||
|
||||
@Override
|
||||
public <T> T getValue(String name) {
|
||||
if ("message".equals(name)) return (T) message;
|
||||
if ("extmap".equals(name)) return (T) extmap;
|
||||
return null;
|
||||
}
|
||||
|
||||
public void execute(_DyncChatWebSocket websocket) {
|
||||
this._redkale_websocket = websocket;
|
||||
websocket.preOnMessage("sendmessage", this, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
_redkale_websocket.onChatMessage(this.message, this.extmap);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JsonConvert.root().convertTo(this);
|
||||
}
|
||||
}
|
||||
|
||||
public static class _DyncChatWebSocketMessage_joinroom {
|
||||
public static class _DyncChatWebSocketMessage_joinroom_01 implements WebSocketParam, Runnable {
|
||||
|
||||
public int roomid;
|
||||
|
||||
@ConvertDisabled
|
||||
public _DyncChatWebSocket _redkale_websocket;
|
||||
|
||||
@Override
|
||||
public <T> T getValue(String name) {
|
||||
if ("roomid".equals(name)) return (T) (Integer) roomid;
|
||||
return null;
|
||||
}
|
||||
|
||||
public void execute(_DyncChatWebSocket websocket) {
|
||||
this._redkale_websocket = websocket;
|
||||
websocket.preOnMessage("joinroom", this, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
_redkale_websocket.onJoinRoom(this.roomid);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JsonConvert.root().convertTo(this);
|
||||
@@ -89,11 +129,11 @@ public final class _DyncChatWebSocketServlet extends WebSocketServlet {
|
||||
_DyncChatWebSocket websocket = (_DyncChatWebSocket) websocket0;
|
||||
_DyncChatWebSocketMessage message = (_DyncChatWebSocketMessage) message0;
|
||||
if (message.sendmessage != null) {
|
||||
websocket.onChatMessage(message.sendmessage.message, message.sendmessage.extmap);
|
||||
message.sendmessage.execute(websocket);
|
||||
return;
|
||||
}
|
||||
if (message.joinroom != null) {
|
||||
websocket.onJoinRoom(message.joinroom.roomid);
|
||||
message.joinroom.execute(websocket);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user