Ich bin nicht in der Lage einen Weg zu finden einen WebSocketHandlerAdapter an einen Reactor Netty Server anzuhängen.spring webflux: rein funktioneller Weg um websocket adapter an reactor-netty Server anzuschließen
Anforderungen: Ich möchte einen Reactor Netty Server starten und HTTP (REST) Endpoints und Websocket Endpoints an denselben Server anhängen. Ich habe die Dokumentation und einige Beispiel-Demo-Anwendungen, die in der Dokumentation erwähnt werden, durchgelesen. Sie zeigen, wie Sie einen HttpHandlerAdapter mit der Funktion newHandler() an den HttpServer anhängen. Wenn es um Webstokes geht, wechseln sie zurück zu Springboots und Annotationsbeispielen. Ich bin nicht in der Lage zu finden, WebSockets mit funktionalen Endpunkten zu befestigen.
Bitte zeigen Sie mir in die richtige Richtung, wie dies zu implementieren ist. 1. Wie schließe ich den Websocket-Adapter an den Netty-Server an? 2. Sollte ich HttpServer oder TcpServer verwenden?
Hinweis: 1. Ich verwende keinen Spring Boot. 2. Ich verwende keine Anmerkungen. 3. Versuchen, dies nur mit funktionalen Webflux-Endpunkten zu erreichen.
Beispielcode:
public HandlerMapping webSocketMapping()
{
Map<String, WebSocketHandler> map = new HashMap<>();
map.put("/echo", new EchoTestingWebSocketHandler());
SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping();
mapping.setUrlMap(map);
mapping.setOrder(-1);
return mapping;
}
public WebSocketHandlerAdapter wsAdapter()
{
HandshakeWebSocketService wsService = new HandshakeWebSocketService(new ReactorNettyRequestUpgradeStrategy());
return new WebSocketHandlerAdapter(wsService);
}
protected void startServer(String host, int port)
{
HttpServer server = HttpServer.create(host, port);
server.newHandler(wsAdapter()).block(); //how do I attach the websocket adapter to the netty server
}
Dank Oleh. Ich versuche, webflux in eine vorhandene Federanwendung zu integrieren, daher ist die Verwendung von SpringBoot oder Annotation keine Option. Ich muss es entweder mithilfe des XML-Konfigurationsanwendungskontexts oder mithilfe von funktionalem Routing tun. Ich werde deinen zweiten Vorschlag versuchen. Können Sie bitte diese Zeile ausfüllen: ** (in, out) -> out.send (in.receive())) **. Ich nehme an, Sie beziehen sich auf Reaktorwebsäcke und webcoketoutboud. Sollte ich ein Reactor-Interface in meinem aktuellen Websocket-Handler implementieren? – chirpi