From 1888f385458a2d166a3fb4036118ff463539b996 Mon Sep 17 00:00:00 2001 From: Ginger Collison Date: Fri, 4 Oct 2019 13:11:18 -0500 Subject: [PATCH] Update pingpong.md --- developing-with-nats/intro/pingpong.md | 165 ++++++++++++++++++++++++- 1 file changed, 163 insertions(+), 2 deletions(-) diff --git a/developing-with-nats/intro/pingpong.md b/developing-with-nats/intro/pingpong.md index 226a88e..3a3e200 100644 --- a/developing-with-nats/intro/pingpong.md +++ b/developing-with-nats/intro/pingpong.md @@ -8,7 +8,86 @@ The client and server use a simple PING/PONG protocol to check that they are bot If you have a connection that is going to be open a long time with few messages traveling on it, setting this PING interval can control how quickly the client will be notified of a problem. However on connections with a lot of traffic, the client will often figure out there is a problem between PINGS, and as a result the default PING interval is often on the order of minutes. To set the interval to 20s: -!INCLUDE "../../\_examples/ping\_20s.html" +{% tabs %} +{% tab title="Go" %} +```go +// Set Ping Interval to 20 seconds +nc, err := nats.Connect("demo.nats.io", nats.Name("API Ping Example"), nats.PingInterval(20*time.Second)) +if err != nil { + log.Fatal(err) +} +defer nc.Close() + +// Do something with the connection +``` +{% endtab %} + +{% tab title="Java" %} +```java +Options options = new Options.Builder(). + server("nats://demo.nats.io:4222"). + pingInterval(Duration.ofSeconds(20)). // Set Ping Interval + build(); +Connection nc = Nats.connect(options); + +// Do something with the connection + +nc.close(); +``` +{% endtab %} + +{% tab title="JavaScript" %} +```javascript +let nc = NATS.connect({ + pingInterval: 20*1000, //20s + url: "nats://demo.nats.io:4222" +}); +``` +{% endtab %} + +{% tab title="Python" %} +```python +nc = NATS() + +await nc.connect( + servers=["nats://demo.nats.io:4222"], + # Set Ping Interval to 20 seconds + ping_interval=20, + ) + +# Do something with the connection. +``` +{% endtab %} + +{% tab title="Ruby" %} +```ruby +require 'nats/client' + +NATS.start(ping_interval: 20) do |nc| + nc.on_reconnect do + puts "Got reconnected to #{nc.connected_server}" + end + + nc.on_disconnect do |reason| + puts "Got disconnected! #{reason}" + end + + # Do something with the connection +end +``` +{% endtab %} + +{% tab title="TypeScript" %} +```typescript +// will throw an exception if connection fails +let nc = await connect({ + pingInterval: 20*1000, //20s + url: "nats://demo.nats.io:4222" +}); +nc.close(); +``` +{% endtab %} +{% endtabs %} ## Limit Outgoing Pings @@ -16,5 +95,87 @@ The PING/PONG interaction is also used by most of the clients as a way to flush For example, to set the maximum number of outgoing pings to 5: -!INCLUDE "../../\_examples/ping\_5.html" +{% tabs %} +{% tab title="Go" %} +```go +// Set maximum number of PINGs out without getting a PONG back + // before the connection will be disconnected as a stale connection. + nc, err := nats.Connect("demo.nats.io", nats.Name("API MaxPing Example"), nats.MaxPingsOutstanding(5)) + if err != nil { + log.Fatal(err) + } + defer nc.Close() + + // Do something with the connection +``` +{% endtab %} + +{% tab title="Java" %} +```java +Options options = new Options.Builder(). + server("nats://demo.nats.io:4222"). + maxPingsOut(5). // Set max pings in flight + build(); +Connection nc = Nats.connect(options); + +// Do something with the connection + +nc.close(); +``` +{% endtab %} + +{% tab title="JavaScript" %} +```javascript +let nc = NATS.connect({ + maxPingOut: 5, + url: "nats://demo.nats.io:4222" +}); +``` +{% endtab %} + +{% tab title="Python" %} +```python +nc = NATS() + +await nc.connect( + servers=["nats://demo.nats.io:4222"], + # Set maximum number of PINGs out without getting a PONG back + # before the connection will be disconnected as a stale connection. + max_outstanding_pings=5, + ping_interval=1, + ) + +# Do something with the connection. +``` +{% endtab %} + +{% tab title="Ruby" %} +```ruby +require 'nats/client' + +NATS.start(max_outstanding_pings: 5) do |nc| + nc.on_reconnect do + puts "Got reconnected to #{nc.connected_server}" + end + + nc.on_disconnect do |reason| + puts "Got disconnected! #{reason}" + end + + # Do something with the connection +end +``` +{% endtab %} + +{% tab title="TypeScript" %} +```typescript +// will throw an exception if connection fails +let nc = await connect({ + maxPingOut: 5, + url: "nats://demo.nats.io:4222" +}); +nc.close(); +``` +{% endtab %} +{% endtabs %}