mirror of
				https://github.com/taigrr/nats.docs
				synced 2025-01-18 04:03:23 -08:00 
			
		
		
		
	
		
			
				
	
	
		
			120 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Monitoring the Connection
 | |
| 
 | |
| Managing the interaction with the server is primarily the job of the client library but most of the libraries also provide some insight into what is happening under the covers.
 | |
| 
 | |
| For example, the client library may provide a mechanism to get the connection's current status:
 | |
| 
 | |
| {% tabs %}
 | |
| {% tab title="Go" %}
 | |
| ```go
 | |
| nc, err := nats.Connect("demo.nats.io", nats.Name("API Example"))
 | |
| if err != nil {
 | |
|     log.Fatal(err)
 | |
| }
 | |
| defer nc.Close()
 | |
| 
 | |
| getStatusTxt := func(nc *nats.Conn) string {
 | |
|     switch nc.Status() {
 | |
|     case nats.CONNECTED:
 | |
|         return "Connected"
 | |
|     case nats.CLOSED:
 | |
|         return "Closed"
 | |
|     default:
 | |
|         return "Other"
 | |
|     }
 | |
| }
 | |
| log.Printf("The connection is %v\n", getStatusTxt(nc))
 | |
| 
 | |
| nc.Close()
 | |
| 
 | |
| log.Printf("The connection is %v\n", getStatusTxt(nc))
 | |
| ```
 | |
| {% endtab %}
 | |
| 
 | |
| {% tab title="Java" %}
 | |
| ```java
 | |
| Connection nc = Nats.connect("nats://demo.nats.io:4222");
 | |
| 
 | |
| System.out.println("The Connection is: " + nc.getStatus());
 | |
| 
 | |
| nc.close();
 | |
| 
 | |
| System.out.println("The Connection is: " + nc.getStatus());
 | |
| ```
 | |
| {% endtab %}
 | |
| 
 | |
| {% tab title="JavaScript" %}
 | |
| ```javascript
 | |
| let nc = NATS.connect("nats://demo.nats.io:4222");
 | |
| 
 | |
| // on node you *must* register an error listener. If not registered
 | |
| // the library emits an 'error' event, the node process will exit.
 | |
| nc.on('error', (err) => {
 | |
|     t.log('client got an error:', err);
 | |
| });
 | |
| 
 | |
| if(nc.closed) {
 | |
|     t.log('client is closed');
 | |
| } else {
 | |
|     t.log('client is not closed');
 | |
| }
 | |
| ```
 | |
| {% endtab %}
 | |
| 
 | |
| {% tab title="Python" %}
 | |
| ```python
 | |
| nc = NATS()
 | |
| 
 | |
| await nc.connect(
 | |
|    servers=["nats://demo.nats.io:4222"],
 | |
|    )
 | |
| 
 | |
| # Do something with the connection.
 | |
| 
 | |
| print("The connection is connected?", nc.is_connected)
 | |
| 
 | |
| while True:
 | |
|   if nc.is_reconnecting:
 | |
|     print("Reconnecting to NATS...")
 | |
|     break
 | |
|   await asyncio.sleep(1)
 | |
| 
 | |
| await nc.close()
 | |
| 
 | |
| print("The connection is closed?", nc.is_closed)
 | |
| ```
 | |
| {% endtab %}
 | |
| 
 | |
| {% tab title="Ruby" %}
 | |
| ```ruby
 | |
| NATS.start(max_reconnect_attempts: 2) do |nc|
 | |
|   puts "Connect is connected?: #{nc.connected?}"
 | |
| 
 | |
|   timer = EM.add_periodic_timer(1) do
 | |
|     if nc.closing?
 | |
|       puts "Connection closed..."
 | |
|       EM.cancel_timer(timer)
 | |
|       NATS.stop
 | |
|     end
 | |
| 
 | |
|     if nc.reconnecting?
 | |
|       puts "Reconnecting to NATS..."
 | |
|       next
 | |
|     end
 | |
|   end
 | |
| end
 | |
| ```
 | |
| {% endtab %}
 | |
| 
 | |
| {% tab title="TypeScript" %}
 | |
| ```typescript
 | |
| if(nc.isClosed()) {
 | |
|     t.log('the client is closed');
 | |
| } else {
 | |
|     t.log('the client is running');
 | |
| }
 | |
| ```
 | |
| {% endtab %}
 | |
| {% endtabs %}
 | |
| 
 |