Skip to content

Commit

Permalink
Allow client to customize handshake data
Browse files Browse the repository at this point in the history
  • Loading branch information
André Hahn committed Oct 28, 2019
1 parent 26e1c39 commit aa28841
Showing 1 changed file with 36 additions and 30 deletions.
66 changes: 36 additions & 30 deletions client/client.go
Expand Up @@ -37,25 +37,10 @@ import (
"github.com/topfreegames/pitaya/conn/message"
"github.com/topfreegames/pitaya/conn/packet"
"github.com/topfreegames/pitaya/logger"
"github.com/topfreegames/pitaya/session"
"github.com/topfreegames/pitaya/util/compression"
)

var (
handshakeBuffer = `
{
"sys": {
"platform": "mac",
"libVersion": "0.3.5-release",
"clientBuildNumber":"20",
"clientVersion":"2.1"
},
"user": {
"age": 30
}
}
`
)

// HandshakeSys struct
type HandshakeSys struct {
Dict map[string]uint16 `json:"dict"`
Expand All @@ -76,19 +61,20 @@ type pendingRequest struct {

// Client struct
type Client struct {
conn net.Conn
Connected bool
packetEncoder codec.PacketEncoder
packetDecoder codec.PacketDecoder
packetChan chan *packet.Packet
IncomingMsgChan chan *message.Message
pendingChan chan bool
pendingRequests map[uint]*pendingRequest
pendingReqMutex sync.Mutex
requestTimeout time.Duration
closeChan chan struct{}
nextID uint32
messageEncoder message.Encoder
conn net.Conn
Connected bool
packetEncoder codec.PacketEncoder
packetDecoder codec.PacketDecoder
packetChan chan *packet.Packet
IncomingMsgChan chan *message.Message
pendingChan chan bool
pendingRequests map[uint]*pendingRequest
pendingReqMutex sync.Mutex
requestTimeout time.Duration
closeChan chan struct{}
nextID uint32
messageEncoder message.Encoder
clientHandshakeData *session.HandshakeData
}

// MsgChannel return the incoming message channel
Expand Down Expand Up @@ -125,11 +111,31 @@ func New(logLevel logrus.Level, requestTimeout ...time.Duration) *Client {
// TODO this should probably be configurable
pendingChan: make(chan bool, 30),
messageEncoder: message.NewMessagesEncoder(true),
clientHandshakeData: &session.HandshakeData{
Sys: session.HandshakeClientData{
Platform: "mac",
LibVersion: "0.3.5-release",
BuildNumber: "20",
Version: "2.1",
},
User: map[string]interface{}{
"age": 30,
},
},
}
}

func (c *Client) SetClientHandshakeData(data *session.HandshakeData) {
c.clientHandshakeData = data
}

func (c *Client) sendHandshakeRequest() error {
p, err := c.packetEncoder.Encode(packet.Handshake, []byte(handshakeBuffer))
enc, err := json.Marshal(c.clientHandshakeData)
if err != nil {
return err
}

p, err := c.packetEncoder.Encode(packet.Handshake, enc)
if err != nil {
return err
}
Expand Down

0 comments on commit aa28841

Please sign in to comment.