message.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package server
  2. import "time"
  3. // List of possible events
  4. const (
  5. openEvent = "open"
  6. keepaliveEvent = "keepalive"
  7. messageEvent = "message"
  8. )
  9. // message represents a message published to a topic
  10. type message struct {
  11. Time int64 `json:"time"` // Unix time in seconds
  12. Event string `json:"event,omitempty"` // One of the above
  13. Message string `json:"message,omitempty"`
  14. }
  15. // messageEncoder is a function that knows how to encode a message
  16. type messageEncoder func(msg *message) (string, error)
  17. // newMessage creates a new message with the current timestamp
  18. func newMessage(event string, msg string) *message {
  19. return &message{
  20. Time: time.Now().Unix(),
  21. Event: event,
  22. Message: msg,
  23. }
  24. }
  25. // newOpenMessage is a convenience method to create an open message
  26. func newOpenMessage() *message {
  27. return newMessage(openEvent, "")
  28. }
  29. // newKeepaliveMessage is a convenience method to create a keepalive message
  30. func newKeepaliveMessage() *message {
  31. return newMessage(keepaliveEvent, "")
  32. }
  33. // newDefaultMessage is a convenience method to create a notification message
  34. func newDefaultMessage(msg string) *message {
  35. return newMessage(messageEvent, msg)
  36. }