WebSocketHandlerAdapterを原子炉ネットサーバに取り付ける方法を見つけることができません。spring webflux:WebSocketアダプタを原子炉ネットサーバに取り付ける純粋に機能的な方法
要件: 原子炉のNettyサーバーを開始し、http(REST)エンドポイントとwebsocketエンドポイントを同じサーバーに接続したいとします。私はドキュメンテーションと、ドキュメンテーションで言及されているサンプルデモアプリケーションのいくつかを見てきました。これらは、newHandler()関数を使用してHttpHandlerAdapterをHttpServerに接続する方法を示しています。しかし、WebSocketについては、スプリングブートとアノテーションの例を使用するように切り替わります。私は機能エンドポイントを使用してWebソケットを接続する方法を見つけることができません。
これを実装する方法については、正しい方向を教えてください。 1. websocketアダプタをNettyサーバに接続するにはどうすればよいですか? 2. HttpServerまたはTcpServerを使用する必要がありますか?
注: 1.私はスプリングブーツを使用していません。 2.注釈を使用していません。 3.これを実現するには、機能的なwebfluxエンドポイントを使用してください。
サンプルコード:
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
}
ありがとうOleh。私はSpringBootや注釈を使用することはオプションではないので、既存のSpringアプリケーションにwebfluxを統合しようとしています。私はxml構成アプリケーションのコンテキストを使用するか、機能的なルーティングを使用する必要があります。私はあなたの2番目の提案を試みます。あなたはこの行を黙示してください:**(in、out) - > out.send(in.receive()))**。私はあなたが原子炉websocketinboundとwebcoketoutboudを指していると仮定します。現在のwebsocketハンドラにリアクタインターフェイスを実装する必要がありますか? – chirpi