17
17
package org .springframework .messaging .rsocket ;
18
18
19
19
import java .time .Duration ;
20
- import java .util .Collections ;
21
20
22
21
import io .netty .buffer .PooledByteBufAllocator ;
23
- import io .rsocket .Closeable ;
24
- import io .rsocket .RSocket ;
25
22
import io .rsocket .RSocketFactory ;
26
23
import io .rsocket .frame .decoder .PayloadDecoder ;
27
- import io .rsocket .transport .netty .client . TcpClientTransport ;
24
+ import io .rsocket .transport .netty .server . CloseableChannel ;
28
25
import io .rsocket .transport .netty .server .TcpServerTransport ;
29
- import io .rsocket .util .DefaultPayload ;
30
26
import org .junit .AfterClass ;
31
27
import org .junit .BeforeClass ;
32
28
import org .junit .Test ;
51
47
* Client-side handling of requests initiated from the server side.
52
48
*
53
49
* @author Rossen Stoyanchev
50
+ * @author Brian Clozel
54
51
*/
55
52
public class RSocketServerToClientIntegrationTests {
56
53
57
54
private static AnnotationConfigApplicationContext context ;
58
55
59
- private static Closeable server ;
56
+ private static CloseableChannel server ;
60
57
61
58
62
59
@ BeforeClass
@@ -66,8 +63,8 @@ public static void setupOnce() {
66
63
67
64
server = RSocketFactory .receive ()
68
65
.frameDecoder (PayloadDecoder .ZERO_COPY )
69
- .acceptor (context .getBean ("serverMessageHandler" , RSocketMessageHandler .class ).serverAcceptor ())
70
- .transport (TcpServerTransport .create ("localhost" , 7000 ))
66
+ .acceptor (context .getBean (RSocketMessageHandler .class ).serverAcceptor ())
67
+ .transport (TcpServerTransport .create ("localhost" , 0 ))
71
68
.start ()
72
69
.block ();
73
70
}
@@ -104,23 +101,21 @@ private static void connectAndVerify(String destination) {
104
101
ServerController serverController = context .getBean (ServerController .class );
105
102
serverController .reset ();
106
103
107
- RSocket rsocket = null ;
104
+ RSocketRequester requester = null ;
108
105
try {
109
- rsocket = RSocketFactory .connect ()
110
- .metadataMimeType ("message/x.rsocket.routing.v0" )
111
- .dataMimeType ("text/plain" )
112
- .setupPayload (DefaultPayload .create ("" , destination ))
113
- .frameDecoder (PayloadDecoder .ZERO_COPY )
114
- .acceptor (context .getBean ("clientMessageHandler" , RSocketMessageHandler .class ).clientAcceptor ())
115
- .transport (TcpClientTransport .create ("localhost" , 7000 ))
116
- .start ()
106
+ requester = RSocketRequester .builder ()
107
+ .annotatedHandlers (new ClientHandler ())
108
+ .rsocketStrategies (context .getBean (RSocketStrategies .class ))
109
+ .connectTcp ("localhost" , server .address ().getPort ())
117
110
.block ();
118
111
112
+ requester .route (destination ).data ("" ).send ().block ();
113
+
119
114
serverController .await (Duration .ofSeconds (5 ));
120
115
}
121
116
finally {
122
- if (rsocket != null ) {
123
- rsocket .dispose ();
117
+ if (requester != null ) {
118
+ requester . rsocket () .dispose ();
124
119
}
125
120
}
126
121
}
@@ -250,24 +245,11 @@ Flux<String> echoChannel(Flux<String> payloads) {
250
245
@ Configuration
251
246
static class RSocketConfig {
252
247
253
- @ Bean
254
- public ClientHandler clientHandler () {
255
- return new ClientHandler ();
256
- }
257
-
258
248
@ Bean
259
249
public ServerController serverController () {
260
250
return new ServerController ();
261
251
}
262
252
263
- @ Bean
264
- public RSocketMessageHandler clientMessageHandler () {
265
- RSocketMessageHandler handler = new RSocketMessageHandler ();
266
- handler .setHandlers (Collections .singletonList (clientHandler ()));
267
- handler .setRSocketStrategies (rsocketStrategies ());
268
- return handler ;
269
- }
270
-
271
253
@ Bean
272
254
public RSocketMessageHandler serverMessageHandler () {
273
255
RSocketMessageHandler handler = new RSocketMessageHandler ();
0 commit comments