mirror of
https://github.com/taigrr/nats.docs
synced 2025-01-18 04:03:23 -08:00
151 lines
3.4 KiB
Markdown
151 lines
3.4 KiB
Markdown
# Protocol Demo
|
|
|
|
## Protocol Demo
|
|
|
|
The virtues of the NATS protocol manifest quickly when you experience how easy it is to use NATS. Because the NATS protocol is text-based, you can use NATS across virtually any platform or language. In the following demo we use [Telnet](https://en.wikipedia.org/wiki/Telnet).
|
|
|
|
On the wire you can publish and subscribe using a simple [set of protocol commands](nats-protocol/).
|
|
|
|
## Instructions
|
|
|
|
**1. Open a terminal session.**
|
|
|
|
You'll use this terminal as the subscriber.
|
|
|
|
**2. Connect to NATS.**
|
|
|
|
```text
|
|
telnet demo.nats.io 4222
|
|
```
|
|
|
|
Expected result:
|
|
|
|
```text
|
|
$ telnet demo.nats.io 4222
|
|
Trying 107.170.221.32...
|
|
Connected to demo.nats.io.
|
|
Escape character is '^]'.
|
|
INFO {"server_id":"NCXMJZYQEWUDJFLYLSTTE745I2WUNCVG3LJJ3NRKSFJXEG6RGK7753DJ","version":"2.0.0","proto":1,"go":"go1.11.10","host":"0.0.0.0","port":4222,"max_payload":1048576,"client_id":5089}
|
|
```
|
|
|
|
**3. Run the subscriber.**
|
|
|
|
Subscribe to the wildcard subject `foo.*` with subject ID of `90`.
|
|
|
|
```text
|
|
sub foo.* 90
|
|
```
|
|
|
|
Subscriber result: `+OK` indicating successful interest registration.
|
|
|
|
```text
|
|
sub foo.* 90
|
|
+OK
|
|
```
|
|
|
|
**4. Open a second terminal window.**
|
|
|
|
You'll use this terminal for the publisher.
|
|
|
|
**5. Connect to NATS.**
|
|
|
|
```text
|
|
telnet demo.nats.io 4222
|
|
```
|
|
|
|
Expected result:
|
|
|
|
```text
|
|
$ telnet demo.nats.io 4222
|
|
Trying 107.170.221.32...
|
|
Connected to demo.nats.io.
|
|
Escape character is '^]'.
|
|
INFO {"server_id":"NCXMJZYQEWUDJFLYLSTTE745I2WUNCVG3LJJ3NRKSFJXEG6RGK7753DJ","version":"2.0.0","proto":1,"go":"go1.11.10","host":"0.0.0.0","port":4222,"max_payload":1048576,"client_id":5089}
|
|
```
|
|
|
|
**6. Publish a message.**
|
|
|
|
The message includes the command \(`pub`\), subject \(`foo.bar`\), and length of the payload \(`5`\). Press enter and provide the payload \(`hello`\), then press enter again.
|
|
|
|
```text
|
|
pub foo.bar 5
|
|
hello
|
|
```
|
|
|
|
Publisher result: `+OK` indicating message publication.
|
|
|
|
```text
|
|
pub foo.bar 5
|
|
hello
|
|
+OK
|
|
```
|
|
|
|
Subscriber result: `MSG` + subject name + subscription ID + message payload size + message payload `hello`.
|
|
|
|
```text
|
|
sub foo.* 90
|
|
+OK
|
|
MSG foo.bar 90 5
|
|
hello
|
|
```
|
|
|
|
**7. Publish another message with reply subject.**
|
|
|
|
```text
|
|
pub foo.bar optional.reply.subject 5
|
|
hello
|
|
+OK
|
|
```
|
|
|
|
Subscriber result: `MSG` indicating message receipt.
|
|
|
|
```text
|
|
MSG foo.bar 90 optional.reply.subject 5
|
|
hello
|
|
```
|
|
|
|
**8. Unsubscribe from interest in the subject.**
|
|
|
|
You can use the `UNSUB` command to unsubscribe from a message.
|
|
|
|
Run the subscriber to unsubscribe:
|
|
|
|
```text
|
|
unsub 90
|
|
```
|
|
|
|
Subscriber result: `+OK` indicating successful deregistration of interest.
|
|
|
|
```text
|
|
unsub 90
|
|
+OK
|
|
```
|
|
|
|
**9. Reconnect to server and subscribe.**
|
|
|
|
```text
|
|
telnet demo.nats.io 4222
|
|
```
|
|
|
|
```text
|
|
sub foo.* 90
|
|
```
|
|
|
|
**10. Explore the ping/pong interval.**
|
|
|
|
If you leave your telnet session open for a few minutes, you may notice that your clients receives `ping` requests from the server. If your client is not active, or does not respond to the server pings within the ping/pong interval, the server disconnects the client. The error message is `-ERR 'Stale Connection'`.
|
|
|
|
You can send a `ping` request to the serve and receive a `PONG` reply. For example:
|
|
|
|
```text
|
|
$ telnet demo.nats.io 4222
|
|
Trying 107.170.221.32...
|
|
Connected to demo.nats.io.
|
|
Escape character is '^]'.
|
|
INFO {"server_id":"NCXMJZYQEWUDJFLYLSTTE745I2WUNCVG3LJJ3NRKSFJXEG6RGK7753DJ","version":"2.0.0","proto":1,"go":"go1.11.10","host":"0.0.0.0","port":4222,"max_payload":1048576,"client_id":5089}
|
|
|
|
ping
|
|
PONG
|
|
```
|
|
|