ref: e042d7baf5169b5c24e7261d57260a87506cb2db yggdrasil-go-coap/README.md -rw-r--r-- 2.5 KiB
e042d7ba — Jozef Kralik fix sending message when peerMaxMessageSize is not set 2 years ago

Build Status codecov Go Report

#CoAP Client and Server for go

Features supported:

Not yet implemented:

  • CoAP over DTLS



#Server UDP/TCP
// Server
	// See /examples/simple/server/main.go
	func handleA(w coap.ResponseWriter, req *coap.Request) {
		log.Printf("Got message in handleA: path=%q: %#v from %v", req.Msg.Path(), req.Msg, req.Client.RemoteAddr())
		log.Printf("Transmitting from A")
		if _, err := w.Write([]byte("hello world")); err != nil {
			log.Printf("Cannot send response: %v", err)

	func main() {
		mux := coap.NewServeMux()
		mux.Handle("/a", coap.HandlerFunc(handleA))

		log.Fatal(coap.ListenAndServe(":5688", "udp", mux))
		// for tcp
		// log.Fatal(coap.ListenAndServe(":5688", "tcp", mux))

		// fot tcp-tls
		// log.Fatal(coap.ListenAndServeTLS(":5688", CertPEMBlock, KeyPEMBlock, mux))
// Client
	// See /examples/simpler/client/main.go
	func main() {
		co, err := coap.Dial("udp", "localhost:5688")
		// for tcp
		// co, err := coap.Dial("tcp", "localhost:5688")
		// for tcp-tls
		// co, err := coap.DialWithTLS("localhost:5688", &tls.Config{InsecureSkipVerify: true})

		if err != nil {
			log.Fatalf("Error dialing: %v", err)

		resp, err := co.Get(path)

		if err != nil {
			log.Fatalf("Error sending request: %v", err)

		log.Printf("Response payload: %v", resp.Payload())

#Observe / Notify


Look to examples/observe/server/main.go


Look to examples/observe/client/main.go



Look to examples/mcast/server/main.go


Look to examples/mcast/client/main.go