Add a handler for message successfully sent

This commit is contained in:
Robbie Trencheny
2017-01-30 14:14:07 -08:00
parent e39e1207dd
commit 7ba6d478f0
2 changed files with 12 additions and 2 deletions
+9 -1
View File
@@ -1,9 +1,10 @@
package melody package melody
import ( import (
"github.com/gorilla/websocket"
"net/http" "net/http"
"sync" "sync"
"github.com/gorilla/websocket"
) )
type handleMessageFunc func(*Session, []byte) type handleMessageFunc func(*Session, []byte)
@@ -17,6 +18,7 @@ type Melody struct {
Upgrader *websocket.Upgrader Upgrader *websocket.Upgrader
messageHandler handleMessageFunc messageHandler handleMessageFunc
messageHandlerBinary handleMessageFunc messageHandlerBinary handleMessageFunc
messageSentHandler handleMessageFunc
errorHandler handleErrorFunc errorHandler handleErrorFunc
connectHandler handleSessionFunc connectHandler handleSessionFunc
disconnectHandler handleSessionFunc disconnectHandler handleSessionFunc
@@ -40,6 +42,7 @@ func New() *Melody {
Upgrader: upgrader, Upgrader: upgrader,
messageHandler: func(*Session, []byte) {}, messageHandler: func(*Session, []byte) {},
messageHandlerBinary: func(*Session, []byte) {}, messageHandlerBinary: func(*Session, []byte) {},
messageSentHandler: func(*Session, []byte) {},
errorHandler: func(*Session, error) {}, errorHandler: func(*Session, error) {},
connectHandler: func(*Session) {}, connectHandler: func(*Session) {},
disconnectHandler: func(*Session) {}, disconnectHandler: func(*Session) {},
@@ -73,6 +76,11 @@ func (m *Melody) HandleMessageBinary(fn func(*Session, []byte)) {
m.messageHandlerBinary = fn m.messageHandlerBinary = fn
} }
// HandleSentMessage fires fn when a message is successfully sent.
func (m *Melody) HandleSentMessage(fn func(*Session, []byte)) {
m.messageSentHandler = fn
}
// HandleError fires fn when a session has an error. // HandleError fires fn when a session has an error.
func (m *Melody) HandleError(fn func(*Session, error)) { func (m *Melody) HandleError(fn func(*Session, error)) {
m.errorHandler = fn m.errorHandler = fn
+3 -1
View File
@@ -2,10 +2,11 @@ package melody
import ( import (
"errors" "errors"
"github.com/gorilla/websocket"
"net/http" "net/http"
"sync" "sync"
"time" "time"
"github.com/gorilla/websocket"
) )
// Session is wrapper around websocket connections. // Session is wrapper around websocket connections.
@@ -71,6 +72,7 @@ loop:
s.melody.errorHandler(s, err) s.melody.errorHandler(s, err)
break loop break loop
} }
s.melody.messageSentHandler(s, msg.msg)
case <-ticker.C: case <-ticker.C:
s.ping() s.ping()
} }