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 7d1e97f
Showing 1 changed file with 36 additions and 14 deletions.
50 changes: 36 additions & 14 deletions client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ 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"
)

Expand Down Expand Up @@ -76,19 +77,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 +127,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 7d1e97f

Please sign in to comment.