hybridgroup.gobot/platforms/nats
deadprogram 885c829a43 license: update license year to include 2017
Signed-off-by: deadprogram <ron@hybridgroup.com>
2017-01-02 22:25:17 +01:00
..
README.md license: update license year to include 2017 2017-01-02 22:25:17 +01:00
doc.go docs: correct NATS README link 2016-12-21 10:53:51 +01:00
nats_adaptor.go nats: corrected godocs comment 2016-12-02 10:05:54 +01:00
nats_adaptor_test.go core: use canonical import domain of gobot.io for all code 2016-12-08 13:24:03 +01:00

README.md

NATS

NATS is a lightweight messaging protocol perfect for your IoT/Robotics projects. It operates over TCP, offers a great number of features but an incredibly simple Pub Sub style model of communicating broadcast messages. NATS is blazingly fast as it is written in Go.

This repository contains the Gobot adaptor/drivers to connect to NATS servers. It uses the NATS Go Client available at https://github.com/nats-io/nats. The NATS project is maintained by Nats.io and sponsored by Apcera. Find more information on setting up a NATS server and its capability at http://nats.io/.

The NATS messaging protocol (http://www.nats.io/documentation/internals/nats-protocol-demo/) is really easy to work with and can be practiced by setting up a NATS server using Go or Docker. For information on setting up a server using the source code, visit https://github.com/nats-io/gnatsd. For information on the Docker image up on Docker Hub, see https://hub.docker.com/_/nats/. Getting the server set up is very easy. The server itself is Golang, can be built for different architectures and installs in a small footprint. This is an excellent way to get communications going between your IoT and Robotics projects.

How to Install

Install running:

go get -d -u gobot.io/x/gobot/... && go install gobot.io/x/gobot/platforms/nats

How to Use

Before running the example, make sure you have an NATS server running somewhere you can connect to

package main

import (
  "fmt"
  "time"

  "gobot.io/x/gobot"
  "gobot.io/x/gobot/platforms/nats"
)

func main() {
  natsAdaptor := nats.NewNatsAdaptor("nats", "localhost:4222", 1234)

  work := func() {
    natsAdaptor.On("hello", func(data []byte) {
      fmt.Println("hello")
    })
    natsAdaptor.On("hola", func(data []byte) {
      fmt.Println("hola")
    })
    data := []byte("o")
    gobot.Every(1*time.Second, func() {
      natsAdaptor.Publish("hello", data)
    })
    gobot.Every(5*time.Second, func() {
      natsAdaptor.Publish("hola", data)
    })
  }

  robot := gobot.NewRobot("natsBot",
    []gobot.Connection{natsAdaptor},
    work,
  )

  robot.Start()
}

Supported Features

  • Publish messages
  • Respond to incoming message events
  • Support for Username/password authentication

Upcoming Features

  • Encoded messages (JSON)
  • Exposing more NATS Features (tls)
  • Simplified tests

Contributing

For our contribution guidelines, please go to https://gobot.io/x/gobot/blob/master/CONTRIBUTING.md

License

Copyright (c) 2013-2017 The Hybrid Group. Licensed under the Apache 2.0 license.