Few notes, also, send 1st data websocket heartbeat immediately.

This commit is contained in:
Bruce Marriner 2015-11-25 08:47:15 -06:00
parent 9d42bf1cc6
commit e384d2d66f

View file

@ -77,13 +77,14 @@ func (s *Session) Listen() (err error) {
if s.wsConn == nil { if s.wsConn == nil {
fmt.Println("No websocket connection exists.") fmt.Println("No websocket connection exists.")
return // need to return an error. return // TODO need to return an error.
} }
for { for {
messageType, message, err := s.wsConn.ReadMessage() messageType, message, err := s.wsConn.ReadMessage()
if err != nil { if err != nil {
fmt.Println("Websocket Listen Error", err) fmt.Println("Websocket Listen Error", err)
// TODO Log error
break break
} }
go s.event(messageType, message) go s.event(messageType, message)
@ -372,6 +373,7 @@ func (s *Session) event(messageType int, message []byte) (err error) {
// if still here, send to generic OnEvent // if still here, send to generic OnEvent
if s.OnEvent != nil { if s.OnEvent != nil {
s.OnEvent(s, e) s.OnEvent(s, e)
return
} }
return return
@ -388,19 +390,23 @@ func (s *Session) Heartbeat(i time.Duration) {
if s.wsConn == nil { if s.wsConn == nil {
fmt.Println("No websocket connection exists.") fmt.Println("No websocket connection exists.")
return // need to return an error. return // TODO need to return an error.
} }
// send first heartbeat immediately because lag could put the
// first heartbeat outside the required heartbeat interval window
ticker := time.NewTicker(i * time.Millisecond) ticker := time.NewTicker(i * time.Millisecond)
for range ticker.C { for {
timestamp := int(time.Now().Unix()) timestamp := int(time.Now().Unix())
err := s.wsConn.WriteJSON(map[string]int{ err := s.wsConn.WriteJSON(map[string]int{
"op": 1, "op": 1,
"d": timestamp, "d": timestamp,
}) })
if err != nil { if err != nil {
return // log error? fmt.Println("error sending data heartbeat:", err)
return // TODO log error?
} }
<-ticker.C
} }
} }
@ -422,7 +428,7 @@ func (s *Session) VoiceChannelJoin(guildID, channelID string) {
if s.wsConn == nil { if s.wsConn == nil {
fmt.Println("error: no websocket connection exists.") fmt.Println("error: no websocket connection exists.")
return return // TODO return error
} }
// Odd, but.. it works. map interface caused odd unknown opcode error // Odd, but.. it works. map interface caused odd unknown opcode error