diff --git a/examples/websocket/websocket.go b/examples/websocket/websocket.go index e2c79a4..2dc5c79 100644 --- a/examples/websocket/websocket.go +++ b/examples/websocket/websocket.go @@ -7,22 +7,11 @@ ) func main() { - chSender := make(chan slack.OutgoingMessage) - api := slack.New("YOUR TOKEN HERE") api.SetDebug(true) rtm := api.NewRTM() go rtm.ManageConnection() - - go func(rtm *slack.RTM, chSender chan slack.OutgoingMessage) { - for { - select { - case msg := <-chSender: - rtm.SendMessage(&msg) - } - } - }(rtm, chSender) for { select { diff --git a/websocket.go b/websocket.go index 3b524bc..b3159fa 100644 --- a/websocket.go +++ b/websocket.go @@ -10,6 +10,8 @@ // RTM represents a managed websocket connection. It also supports // all the methods of the `Slack` type. +// +// Create this element with Client's NewRTM(). type RTM struct { mutex sync.Mutex messageID int diff --git a/websocket_managed_conn.go b/websocket_managed_conn.go index 61e1b66..127e8df 100644 --- a/websocket_managed_conn.go +++ b/websocket_managed_conn.go @@ -3,6 +3,7 @@ import ( "encoding/json" "fmt" + "io" "reflect" "time" @@ -115,6 +116,7 @@ rtm.pings[rtm.messageID] = time.Now() msg := &Ping{Id: rtm.messageID, Type: "ping"} + rtm.Debugln("Sending PING") if err := websocket.JSON.Send(conn, msg); err != nil { errors <- fmt.Errorf("error sending 'ping': %s", err) } @@ -154,12 +156,14 @@ event := json.RawMessage{} err := websocket.JSON.Receive(conn, &event) - if err != nil { + if err == io.EOF { + rtm.Debugln("GOT EOF, are we killing ??") + } else if err != nil { errors <- err return } if len(event) == 0 { - //log.Println("Event Empty. WTF?") + rtm.Debugln("Event Empty. WTF?") continue }