forked from mirror/websocket
Add IsWebSocketUpgrade
This commit is contained in:
parent
c45a635370
commit
a622679ebd
|
@ -251,3 +251,10 @@ func Subprotocols(r *http.Request) []string {
|
||||||
}
|
}
|
||||||
return protocols
|
return protocols
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsWebSocketUpgrade returns true if the client requested upgrade to the
|
||||||
|
// WebSocket protocol.
|
||||||
|
func IsWebSocketUpgrade(r *http.Request) bool {
|
||||||
|
return tokenListContainsValue(r.Header, "Connection", "upgrade") &&
|
||||||
|
tokenListContainsValue(r.Header, "Upgrade", "websocket")
|
||||||
|
}
|
||||||
|
|
|
@ -31,3 +31,21 @@ func TestSubprotocols(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var isWebSocketUpgradeTests = []struct {
|
||||||
|
ok bool
|
||||||
|
h http.Header
|
||||||
|
}{
|
||||||
|
{false, http.Header{"Upgrade": {"websocket"}}},
|
||||||
|
{false, http.Header{"Connection": {"upgrade"}}},
|
||||||
|
{true, http.Header{"Connection": {"upgRade"}, "Upgrade": {"WebSocket"}}},
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestIsWebSocketUpgrade(t *testing.T) {
|
||||||
|
for _, tt := range isWebSocketUpgradeTests {
|
||||||
|
ok := IsWebSocketUpgrade(&http.Request{Header: tt.h})
|
||||||
|
if tt.ok != ok {
|
||||||
|
t.Errorf("IsWebSocketUpgrade(%v) returned %v, want %v", tt.h, ok, tt.ok)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue