split HandleSentMessage into text and binary methods

This commit is contained in:
Ola Holmström
2017-02-10 23:53:55 +01:00
3 changed files with 30 additions and 9 deletions
+1
View File
@@ -2,6 +2,7 @@
* Return errors for some exposed methods. * Return errors for some exposed methods.
* Add `HandleRequestWithKeys`. * Add `HandleRequestWithKeys`.
* Add `HandleSentMessage` and `HandleSentMessageBinary`.
## 2017-01-20 ## 2017-01-20
+22 -9
View File
@@ -14,15 +14,17 @@ type filterFunc func(*Session) bool
// Melody implements a websocket manager. // Melody implements a websocket manager.
type Melody struct { type Melody struct {
Config *Config Config *Config
Upgrader *websocket.Upgrader Upgrader *websocket.Upgrader
messageHandler handleMessageFunc messageHandler handleMessageFunc
messageHandlerBinary handleMessageFunc messageHandlerBinary handleMessageFunc
errorHandler handleErrorFunc messageSentHandler handleMessageFunc
connectHandler handleSessionFunc messageSentHandlerBinary handleMessageFunc
disconnectHandler handleSessionFunc errorHandler handleErrorFunc
pongHandler handleSessionFunc connectHandler handleSessionFunc
hub *hub disconnectHandler handleSessionFunc
pongHandler handleSessionFunc
hub *hub
} }
// New creates a new melody instance with default Upgrader and Config. // New creates a new melody instance with default Upgrader and Config.
@@ -41,6 +43,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) {},
@@ -74,6 +77,16 @@ func (m *Melody) HandleMessageBinary(fn func(*Session, []byte)) {
m.messageHandlerBinary = fn m.messageHandlerBinary = fn
} }
// HandleSentMessage fires fn when a text message is successfully sent.
func (m *Melody) HandleSentMessage(fn func(*Session, []byte)) {
m.messageSentHandler = fn
}
// HandleSentMessageBinary fires fn when a binary message is successfully sent.
func (m *Melody) HandleSentMessageBinary(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
+7
View File
@@ -91,6 +91,13 @@ loop:
break loop break loop
} }
if msg.t == websocket.TextMessage {
s.melody.messageSentHandler(s, msg.msg)
}
if msg.t == websocket.BinaryMessage {
s.melody.messageSentHandlerBinary(s, msg.msg)
}
case <-ticker.C: case <-ticker.C:
s.ping() s.ping()
} }