stomp.go 842 B

1234567891011121314151617181920212223242526272829303132333435
  1. package stomp
  2. import (
  3. "encoding/json"
  4. "log"
  5. "battlecamp-go-server/flag"
  6. "github.com/go-stomp/stomp"
  7. )
  8. var stompConnection *stomp.Conn
  9. func getStompConnection() *stomp.Conn {
  10. if stompConnection == nil {
  11. var err error
  12. stompConnection, err = stomp.Dial("tcp", *flag.StompUrl)
  13. if(err != nil) {
  14. log.Printf("Error creating stomp connection error: %v\n", err)
  15. } else {
  16. log.Printf("Created stomp connection to %v", *flag.StompUrl)
  17. }
  18. }
  19. return stompConnection
  20. }
  21. func SendJson(topic string, v interface{}) {
  22. b, _ := json.Marshal(v)
  23. getStompConnection().Send("/topic/go-battlecamp."+topic, "application/json;charset=utf-8", b, stomp.SendOpt.NoContentLength)
  24. }
  25. func Subscribe(topic string) chan *stomp.Message {
  26. result, _ := getStompConnection().Subscribe("/topic/go-battlecamp."+topic, stomp.AckAuto)
  27. return result.C
  28. }