83 lines
2.0 KiB
Go
83 lines
2.0 KiB
Go
|
package ddp
|
||
|
|
||
|
// ------------------------------------------------------------
|
||
|
// DDP Messages
|
||
|
//
|
||
|
// Go structs representing DDP raw messages ready for JSON
|
||
|
// encoding.
|
||
|
// ------------------------------------------------------------
|
||
|
|
||
|
// Message contains the common fields that all DDP messages use.
|
||
|
type Message struct {
|
||
|
Type string `json:"msg"`
|
||
|
ID string `json:"id,omitempty"`
|
||
|
}
|
||
|
|
||
|
// Connect represents a DDP connect message.
|
||
|
type Connect struct {
|
||
|
Message
|
||
|
Version string `json:"version"`
|
||
|
Support []string `json:"support"`
|
||
|
Session string `json:"session,omitempty"`
|
||
|
}
|
||
|
|
||
|
// NewConnect creates a new connect message
|
||
|
func NewConnect() *Connect {
|
||
|
return &Connect{Message: Message{Type: "connect"}, Version: "1", Support: []string{"1"}}
|
||
|
}
|
||
|
|
||
|
// NewReconnect creates a new connect message with a session ID to resume.
|
||
|
func NewReconnect(session string) *Connect {
|
||
|
c := NewConnect()
|
||
|
c.Session = session
|
||
|
return c
|
||
|
}
|
||
|
|
||
|
// Ping represents a DDP ping message.
|
||
|
type Ping Message
|
||
|
|
||
|
// NewPing creates a new ping message with optional ID.
|
||
|
func NewPing(id string) *Ping {
|
||
|
return &Ping{Type: "ping", ID: id}
|
||
|
}
|
||
|
|
||
|
// Pong represents a DDP pong message.
|
||
|
type Pong Message
|
||
|
|
||
|
// NewPong creates a new pong message with optional ID.
|
||
|
func NewPong(id string) *Pong {
|
||
|
return &Pong{Type: "pong", ID: id}
|
||
|
}
|
||
|
|
||
|
// Method is used to send a remote procedure call to the server.
|
||
|
type Method struct {
|
||
|
Message
|
||
|
ServiceMethod string `json:"method"`
|
||
|
Args []interface{} `json:"params"`
|
||
|
}
|
||
|
|
||
|
// NewMethod creates a new method invocation object.
|
||
|
func NewMethod(id, serviceMethod string, args []interface{}) *Method {
|
||
|
return &Method{
|
||
|
Message: Message{Type: "method", ID: id},
|
||
|
ServiceMethod: serviceMethod,
|
||
|
Args: args,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Sub is used to send a subscription request to the server.
|
||
|
type Sub struct {
|
||
|
Message
|
||
|
SubName string `json:"name"`
|
||
|
Args []interface{} `json:"params"`
|
||
|
}
|
||
|
|
||
|
// NewSub creates a new sub object.
|
||
|
func NewSub(id, subName string, args []interface{}) *Sub {
|
||
|
return &Sub{
|
||
|
Message: Message{Type: "sub", ID: id},
|
||
|
SubName: subName,
|
||
|
Args: args,
|
||
|
}
|
||
|
}
|