Skip to content
Publish-Subscribe Broker for the Constrained Application Protocol (CoAP) in Golang
Go
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
coapmq_client
coapmq_server
.travis.yml
README.md
broker.go
client.go
constant.go
messageCodec.go
tool.go
tool_test.go

README.md

CoAPMQ: Publish-Subscribe Broker for the Constrained Application Protocol (CoAP) in Golang

GitHub license GoDoc Build Status

Features

It is Golang implement based on draft RFC "Publish-Subscribe Broker for the Constrained Application Protocol (CoAP)". It is a replace version of CoAPMQ. This package based on latest draft spec (2016/01/22).

Features

  • Support pub/sub mechanism based on CoAP
  • It include a simple client/server
  • Add extra heart beat mechanism to ensure UDP tunnel alive.

Install

Install package:

  • go get github.com/kkdai/coapmq

Install binary:

  • Install simple server:
    • go get github.com/kkdai/coapmq/coapmq_server
  • Install simple interactive client:
    • go get github.com/kkdai/coapmq/coapmq_client

Usage

Server side example

Create a 1024 buffer for pub/sub server and listen 5683 (default port for CoAP)

package main

import (
	"log"

	. "github.com/kkdai/coapmq"
)

func main() {
	log.Println("Server start....")
	serv := NewBroker(1024)
	serv.ListenAndServe(":5683")
}

Client side example

Create a client to read input flag to send add/remove subscription to server.

package main

import (
	"log"

	. "github.com/kkdai/coapmq"
)

func main() {
	serverAddr := "localhost:5683"
	client := NewClient(serverAddr)

	//Create Topic
	err := client.CreateTopic("topic1")
	err = client.CreateTopic("topic2")

	//Remove Topic
	err = RemoveTopic("topic2")	

	//Subsciption Topic
	ch, err := client.Subscription("topic1")
	log.Println("Wait and get sub:", <-ch)
}

Run interactive client with CoAPMQ

#####Parameters:

  • "-s": Connect server address, default with "localhost:5683"
  • "-v": Display log information.
//Check detail help file
>>coapmq_client --help

Client to connect to coapmq broker

Usage:
  coapmq_client [flags]

Flags:
  -s, --server="localhost:5683": coapmq server address
  -v, --verbose[=false]: Verbose


//Run with local address
>>coapmq_client

Connect to coapmq server: localhost:5683
Command:( C:Create S:Subscription P:Publish R:RemoveTopic V:Verbose G:Read Q:exit )

//Create a topic  "t1" on server
:>c t1
CreateTopic topic: t1  ret= <nil>
Command:( C:Create S:Subscription P:Publish R:RemoveTopic V:Verbose G:Read Q:exit )

//Subscribe topic  "t1" on server
:>s t1
Subscription topic: t1  ret= <nil>
Command:( C:Create S:Subscription P:Publish R:RemoveTopic V:Verbose G:Read Q:exit )

//Publish data "test1" on topic "t1"
:>p t1 test1
Publish topic: t1  ret= <nil>
Command:( C:Create S:Subscription P:Publish R:RemoveTopic V:Verbose G:Read Q:exit )
:>

//Get call back Goroutine
 >>> Got pub from topic: t1  pub: test1

Benchmark

TBD

Inspired

Project52

It is one of my project 52.

License

This package is licensed under MIT license. See LICENSE for details.

You can’t perform that action at this time.