use of reactor.ipc.netty.http.server.HttpServer in project reactor-netty by reactor.
the class WebsocketTest method duplexEcho.
@Test
public void duplexEcho() throws Exception {
int c = 10;
CountDownLatch clientLatch = new CountDownLatch(c);
CountDownLatch serverLatch = new CountDownLatch(c);
FluxProcessor<String, String> server = ReplayProcessor.<String>create().serialize();
FluxProcessor<String, String> client = ReplayProcessor.<String>create().serialize();
server.log("server").subscribe(v -> serverLatch.countDown());
client.log("client").subscribe(v -> clientLatch.countDown());
httpServer = HttpServer.create(0).newHandler((in, out) -> out.sendWebsocket((i, o) -> o.sendString(i.receive().asString().take(c).subscribeWith(server)))).block(Duration.ofSeconds(30));
Flux.interval(Duration.ofMillis(200)).map(Object::toString).subscribe(client::onNext);
HttpClient.create(httpServer.address().getPort()).ws("/test").flatMap(in -> in.receiveWebsocket((i, o) -> o.options(opt -> opt.flushOnEach()).sendString(i.receive().asString().subscribeWith(client)))).subscribe();
Assert.assertTrue(serverLatch.await(10, TimeUnit.SECONDS));
Assert.assertTrue(clientLatch.await(10, TimeUnit.SECONDS));
}
use of reactor.ipc.netty.http.server.HttpServer in project reactor-netty by reactor.
the class HttpCompressionClientServerTests method serverCompressionDefault.
@Test
public void serverCompressionDefault() throws Exception {
HttpServer server = HttpServer.create(0);
NettyContext nettyContext = server.newHandler((in, out) -> out.sendString(Mono.just("reply"))).block(Duration.ofMillis(10_000));
HttpClient client = HttpClient.create(o -> o.connectAddress(() -> address(nettyContext)));
HttpClientResponse resp = client.get("/test", req -> req.header("Accept-Encoding", "gzip")).block();
assertThat(resp.responseHeaders().get("content-encoding")).isNull();
String reply = resp.receive().asString().blockFirst();
Assert.assertEquals("reply", reply);
resp.dispose();
nettyContext.dispose();
nettyContext.onClose().block();
}
use of reactor.ipc.netty.http.server.HttpServer in project reactor-netty by reactor.
the class HttpCompressionClientServerTests method serverCompressionAlwaysEnabled.
@Test
public void serverCompressionAlwaysEnabled() throws Exception {
HttpServer server = HttpServer.create(o -> o.port(0).compression(true));
NettyContext nettyContext = server.newHandler((in, out) -> out.sendString(Mono.just("reply"))).block(Duration.ofMillis(10_000));
// don't activate compression on the client options to avoid auto-handling (which removes the header)
HttpClient client = HttpClient.create(o -> o.connectAddress(() -> address(nettyContext)));
HttpClientResponse resp = // edit the header manually to attempt to trigger compression on server side
client.get("/test", req -> req.header("Accept-Encoding", "gzip")).block();
assertThat(resp.responseHeaders().get("content-encoding")).isEqualTo("gzip");
byte[] replyBuffer = resp.receive().aggregate().asByteArray().block();
assertThat(new String(replyBuffer)).isNotEqualTo("reply");
GZIPInputStream gis = new GZIPInputStream(new ByteArrayInputStream(replyBuffer));
byte[] deflatedBuf = new byte[1024];
int readable = gis.read(deflatedBuf);
gis.close();
assertThat(readable).isGreaterThan(0);
String deflated = new String(deflatedBuf, 0, readable);
assertThat(deflated).isEqualTo("reply");
nettyContext.dispose();
nettyContext.onClose().block();
}
use of reactor.ipc.netty.http.server.HttpServer in project reactor-netty by reactor.
the class HttpCompressionClientServerTests method compressionServerDefaultClientDefaultIsNone.
@Test
public void compressionServerDefaultClientDefaultIsNone() throws Exception {
HttpServer server = HttpServer.create(o -> o.port(0));
NettyContext nettyContext = server.newHandler((in, out) -> out.sendString(Mono.just("reply"))).block(Duration.ofMillis(10_000));
HttpClient client = HttpClient.create(o -> o.connectAddress(() -> address(nettyContext)));
HttpClientResponse resp = client.get("/test").block();
String reply = resp.receive().asString().blockFirst();
assertThat(resp.responseHeaders().get("Content-Encoding")).isNull();
assertThat(reply).isEqualTo("reply");
resp.dispose();
nettyContext.dispose();
nettyContext.onClose().block();
}
use of reactor.ipc.netty.http.server.HttpServer in project reactor-netty by reactor.
the class HttpCompressionClientServerTests method trueEnabledIncludeContentEncoding.
@Test
public void trueEnabledIncludeContentEncoding() throws Exception {
HttpServer server = HttpServer.create(o -> o.port(0).compression(true));
NettyContext nettyContext = server.newHandler((in, out) -> out.sendString(Mono.just("reply"))).block(Duration.ofMillis(10_000));
HttpClient client = HttpClient.create(o -> o.compression(true).connectAddress(() -> address(nettyContext)));
HttpClientResponse res = client.get("/test", o -> {
Assert.assertTrue(o.requestHeaders().contains("Accept-Encoding", "gzip", true));
return o;
}).block();
res.dispose();
nettyContext.dispose();
nettyContext.onClose().block();
}
Aggregations