expose Upgrader issue #1
This commit is contained in:
@@ -12,7 +12,7 @@ type filterFunc func(*Session) bool
|
|||||||
|
|
||||||
type Melody struct {
|
type Melody struct {
|
||||||
Config *Config
|
Config *Config
|
||||||
upgrader *websocket.Upgrader
|
Upgrader *websocket.Upgrader
|
||||||
messageHandler handleMessageFunc
|
messageHandler handleMessageFunc
|
||||||
errorHandler handleErrorFunc
|
errorHandler handleErrorFunc
|
||||||
connectHandler handleSessionFunc
|
connectHandler handleSessionFunc
|
||||||
@@ -33,7 +33,7 @@ func New() *Melody {
|
|||||||
|
|
||||||
return &Melody{
|
return &Melody{
|
||||||
Config: newConfig(),
|
Config: newConfig(),
|
||||||
upgrader: upgrader,
|
Upgrader: upgrader,
|
||||||
messageHandler: func(*Session, []byte) {},
|
messageHandler: func(*Session, []byte) {},
|
||||||
errorHandler: func(*Session, error) {},
|
errorHandler: func(*Session, error) {},
|
||||||
connectHandler: func(*Session) {},
|
connectHandler: func(*Session) {},
|
||||||
@@ -64,9 +64,10 @@ func (m *Melody) HandleError(fn func(*Session, error)) {
|
|||||||
|
|
||||||
// Handles a http request and upgrades it to a websocket.
|
// Handles a http request and upgrades it to a websocket.
|
||||||
func (m *Melody) HandleRequest(w http.ResponseWriter, r *http.Request) {
|
func (m *Melody) HandleRequest(w http.ResponseWriter, r *http.Request) {
|
||||||
conn, err := m.upgrader.Upgrade(w, r, nil)
|
conn, err := m.Upgrader.Upgrade(w, r, nil)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
m.errorHandler(nil, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -77,6 +77,33 @@ func TestEcho(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestUpgrader(t *testing.T) {
|
||||||
|
broadcast := NewTestServer()
|
||||||
|
broadcast.m.HandleMessage(func(session *Session, msg []byte) {
|
||||||
|
session.Write(msg)
|
||||||
|
})
|
||||||
|
server := httptest.NewServer(broadcast)
|
||||||
|
defer server.Close()
|
||||||
|
|
||||||
|
broadcast.m.Upgrader = &websocket.Upgrader{
|
||||||
|
ReadBufferSize: 1024,
|
||||||
|
WriteBufferSize: 1024,
|
||||||
|
CheckOrigin: func(r *http.Request) bool { return false },
|
||||||
|
}
|
||||||
|
|
||||||
|
broadcast.m.HandleError(func(session *Session, err error) {
|
||||||
|
if err == nil || err.Error() != "websocket: origin not allowed" {
|
||||||
|
t.Error("there should be a origin error")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
_, err := NewDialer(server.URL)
|
||||||
|
|
||||||
|
if err == nil || err.Error() != "websocket: bad handshake" {
|
||||||
|
t.Error("there should be a badhandshake error")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestBroadcast(t *testing.T) {
|
func TestBroadcast(t *testing.T) {
|
||||||
broadcast := NewTestServer()
|
broadcast := NewTestServer()
|
||||||
broadcast.m.HandleMessage(func(session *Session, msg []byte) {
|
broadcast.m.HandleMessage(func(session *Session, msg []byte) {
|
||||||
|
|||||||
Reference in New Issue
Block a user