Collectives™ on Stack Overflow
Find centralized, trusted content and collaborate around the technologies you use most.
Learn more about Collectives
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Learn more about Teams
There are few web pages about reactor-netty on the internet. And I don't understand the meaning of some code below. These code below is just ABC of reactor-netty. But I really can not find more information on the internet. So I have to ask for help.
import reactor.netty.DisposableServer;
import reactor.netty.tcp.TcpServer;
public class Application {
public static void main(String[] args) {
DisposableServer server =
TcpServer.create()
.host("localhost")
.port(8080)
.bindNow();
server.onDispose() // <1> what's the meaning?
.block(); // <2> what's the meaning when combined with server.onDispose()?
import reactor.netty.Connection;
import reactor.netty.tcp.TcpClient;
public class Application {
public static void main(String[] args) {
Connection connection =
TcpClient.create()
.host("example.com")
.port(80)
.connectNow();
connection.onDispose() // <3> what's the meaning?
.block(); // <4> what's the meaning when combined with connection.onDispose()? It has connectNow invoked already. Does it wait for connectNow function to return and stop?
import io.netty.handler.ssl.util.SelfSignedCertificate;
import reactor.netty.tcp.TcpServer;
import reactor.netty.tcp.TcpSslContextSpec;
* A TCP server that sends back the received content.
* @author Violeta Georgieva
public final class EchoServer {
static final boolean SECURE = System.getProperty("secure") != null;
static final int PORT = Integer.parseInt(System.getProperty("port", SECURE ? "8443" : "8080"));
static final boolean WIRETAP = System.getProperty("wiretap") != null;
public static void main(String[] args) throws Exception {
TcpServer server =
TcpServer.create()
.port(PORT)
.wiretap(WIRETAP)
.handle((in, out) -> out.send(in.receive().retain())); // <5> When is it executed? And how?
if (SECURE) {
SelfSignedCertificate ssc = new SelfSignedCertificate();
server = server.secure(
spec -> spec.sslContext(TcpSslContextSpec.forServer(ssc.certificate(), ssc.privateKey())));
server.bindNow()
.onDispose()
.block();
Please help me with the five places in the code above. Thank you.
<2>block: Its simply to block the application thread until the server is shutdown. If there was no block the application would simply terminate without the server listening. The javadoc for it states
Subscribe to this Mono and block indefinitely
<1>onDispose : When the underlying netty channel shutsdown, the future will get notified of its success or failure. Its Mono type simply means there is no onNext as there are no emissions, its either successful or a failure.
* Returns an observing {@link Mono} terminating with success when shutdown
* successfully or error.
* @return a {@link Mono} terminating with success if shutdown successfully or error
default Mono<Void> onDispose() {
return FutureMono.from(channel().closeFuture());
3 and 4 is the same behavior from a client connection/channel perspective.
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.