Merge pull request #166 from b1naryth1ef/feature/sharding

Add sharding support
This commit is contained in:
Bruce 2016-04-22 15:42:23 -05:00
commit 7bd2bb19d8
2 changed files with 19 additions and 1 deletions

View file

@ -38,6 +38,10 @@ type Session struct {
// Should the session request compressed websocket data. // Should the session request compressed websocket data.
Compress bool Compress bool
// Sharding
ShardID int
NumShards int
// Should state tracking be enabled. // Should state tracking be enabled.
// State tracking is the best way for getting the the users // State tracking is the best way for getting the the users
// active guilds and the members of the guilds. // active guilds and the members of the guilds.

View file

@ -39,6 +39,7 @@ type handshakeData struct {
Properties handshakeProperties `json:"properties"` Properties handshakeProperties `json:"properties"`
LargeThreshold int `json:"large_threshold"` LargeThreshold int `json:"large_threshold"`
Compress bool `json:"compress"` Compress bool `json:"compress"`
Shard [2]int `json:"shard"`
} }
type handshakeOp struct { type handshakeOp struct {
@ -78,7 +79,20 @@ func (s *Session) Open() (err error) {
return return
} }
err = s.wsConn.WriteJSON(handshakeOp{2, handshakeData{3, s.Token, handshakeProperties{runtime.GOOS, "Discordgo v" + VERSION, "", "", ""}, 250, s.Compress}}) handshake := handshakeData{
Version: 4,
Token: s.Token,
Properties: handshakeProperties{runtime.GOOS, "Discordgo v" + VERSION, "", "", ""},
LargeThreshold: 250,
Compress: s.Compress,
}
// If we've set NumShards, add the shard information to the handshake
if s.NumShards > 0 {
handshake.Shard = [2]int{s.ShardID, s.NumShards}
}
err = s.wsConn.WriteJSON(handshakeOp{2, handshake})
if err != nil { if err != nil {
return return
} }