blob: fda9c1f28a5c8ce4c6397ecc49106999f5bf4329 [file] [log] [blame]
package main
import (
"log"
"net"
"github.com/runtimeco/go-coap"
)
func handleA(l *net.UDPConn, a *net.UDPAddr, m coap.Message) coap.Message {
log.Printf("Got message in handleA: path=%q: %#v from %v", m.Path(), m, a)
if m.IsConfirmable() {
res := coap.NewDgramMessage(coap.MessageParams{
Type: coap.Acknowledgement,
Code: coap.Content,
MessageID: m.MessageID(),
Token: m.Token(),
Payload: []byte("hello to you!"),
})
res.SetOption(coap.ContentFormat, coap.TextPlain)
log.Printf("Transmitting from A %#v", res)
return res
}
return nil
}
func handleB(l *net.UDPConn, a *net.UDPAddr, m coap.Message) coap.Message {
log.Printf("Got message in handleB: path=%q: %#v from %v", m.Path(), m, a)
if m.IsConfirmable() {
res := coap.NewDgramMessage(coap.MessageParams{
Type: coap.Acknowledgement,
Code: coap.Content,
MessageID: m.MessageID(),
Token: m.Token(),
Payload: []byte("good bye!"),
})
res.SetOption(coap.ContentFormat, coap.TextPlain)
log.Printf("Transmitting from B %#v", res)
return res
}
return nil
}
func main() {
mux := coap.NewServeMux()
mux.Handle("/a", coap.FuncHandler(handleA))
mux.Handle("/b", coap.FuncHandler(handleB))
log.Fatal(coap.ListenAndServe("udp", ":5683", mux))
}