You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
832 B
46 lines
832 B
package ws
|
|
|
|
import (
|
|
"encoding/json"
|
|
"gopkg.in/olahol/melody.v1"
|
|
)
|
|
|
|
type Client struct {
|
|
Id string // account_typ:account_id
|
|
AccountId int64
|
|
AccountType string
|
|
Pid int64
|
|
Online bool
|
|
RoomId string
|
|
node *Node
|
|
*melody.Session
|
|
}
|
|
|
|
func NewClient(session *melody.Session, node *Node, roomId string) *Client {
|
|
client := new(Client)
|
|
client.Session = session
|
|
client.node = node
|
|
client.Online = false
|
|
client.RoomId = roomId
|
|
return client
|
|
}
|
|
|
|
func (c *Client) BroadcastAll(msg *Message) {
|
|
c.node.BroadcastAll(msg, c)
|
|
}
|
|
|
|
func (c *Client) Register() error {
|
|
return c.node.RegisterClient(c)
|
|
}
|
|
|
|
func (c *Client) Send(msg *Message) {
|
|
c.node.Send(msg)
|
|
}
|
|
|
|
func (c *Client) WriteJson(body interface{}) error {
|
|
bs, err := json.Marshal(&body)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return c.Write(bs)
|
|
}
|