Skip to content

Commit

Permalink
Add docs for Tcp|HttpServers with same configuration but different …
Browse files Browse the repository at this point in the history
…bind addresses (#1760)

Related to #1751 

Co-authored-by: Simon Baslé <simon.basle@gmail.com>
Co-authored-by: Violeta Georgieva <milesg78@gmail.com>
  • Loading branch information
3 people authored Aug 9, 2021
1 parent 901d6f3 commit dbc5f85
Show file tree
Hide file tree
Showing 4 changed files with 107 additions and 0 deletions.
15 changes: 15 additions & 0 deletions docs/asciidoc/http-server.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,21 @@ include::{examplesdir}/address/Application.java[lines=18..33]
<2> Configures the `HTTP` server port
====

To serve on multiple addresses, after having configured the `HttpServer` you can bind it multiple times to obtain separate `DisposableServer`s.
All created servers will share resources such as `LoopResources` because they use the same configuration instance under the hood.

====
[source,java,indent=0]
.{examplesdir}/address/MultiAddressApplication.java
----
include::{examplesdir}/address/MultiAddressApplication.java[lines=18..41]
----
<1> Configures the first `HTTP` server host
<2> Configures the first `HTTP` server port
<3> Configures the second `HTTP` server host
<4> Configures the second `HTTP` server port
====

== Eager Initialization

By default, the initialization of the `HttpServer` resources happens on demand. This means that the `bind
Expand Down
15 changes: 15 additions & 0 deletions docs/asciidoc/tcp-server.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,21 @@ include::{examplesdir}/address/Application.java[lines=18..33]
<2> Configures the `TCP` server port
====

To serve on multiple addresses, after having configured the `TcpServer` you can bind it multiple times to obtain separate `DisposableServer`s.
All created servers will share resources such as `LoopResources` because they use the same configuration instance under the hood.

====
[source,java,indent=0]
.{examplesdir}/address/MultiAddressApplication.java
----
include::{examplesdir}/address/MultiAddressApplication.java[lines=18..41]
----
<1> Configures the first `TCP` server host
<2> Configures the first `TCP` server port
<3> Configures the second `TCP` server host
<4> Configures the second `TCP` server port
====

== Eager Initialization

By default, the initialization of the `TcpServer` resources happens on demand. This means that the `bind
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/*
* Copyright (c) 2021 VMware, Inc. or its affiliates, All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package reactor.netty.examples.documentation.http.server.address;

import reactor.core.publisher.Mono;
import reactor.netty.DisposableServer;
import reactor.netty.http.server.HttpServer;

public class MultiAddressApplication {
public static void main(String[] args) {
HttpServer httpServer = HttpServer.create();
DisposableServer server1 = httpServer
.host("localhost") //<1>
.port(8080) //<2>
.bindNow();

DisposableServer server2 = httpServer
.host("0.0.0.0") //<3>
.port(8081) //<4>
.bindNow();

Mono.when(server1.onDispose(), server2.onDispose())
.block();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/*
* Copyright (c) 2021 VMware, Inc. or its affiliates, All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package reactor.netty.examples.documentation.tcp.server.address;

import reactor.core.publisher.Mono;
import reactor.netty.DisposableServer;
import reactor.netty.tcp.TcpServer;

public class MultiAddressApplication {

public static void main(String[] args) {
TcpServer tcpServer = TcpServer.create();
DisposableServer server1 = tcpServer
.host("localhost") //<1>
.port(8080) //<2>
.bindNow();

DisposableServer server2 = tcpServer
.host("0.0.0.0") //<3>
.port(8081) //<4>
.bindNow();

Mono.when(server1.onDispose(), server2.onDispose())
.block();
}
}

0 comments on commit dbc5f85

Please sign in to comment.