websocket
websocket copied to clipboard
Improve upgrader documentation regarding protocols
Points to cover
- An application can handle subprotocol negotiation on its own by setting the Sec-Websocket-Protocol response header. The
Subprotocols(r *http.Request) []string
function is helpful here. - Set u.Subprotocols for builtin subprotocol negotiation. Builtin negotiation overrides a subprotocol specified in the response header (it would have been better to return an error, but it's too late to change that).
- Builtin negotiation uses first match in u.Subprotocols. If there's no match, then no protocol is negotiated.
Hi! Could I contribute with it =?
Hi, @marti1125 yes absolutely! Documentation contributions are always welcome assuming they're clear and concise; my vote, feel free to open a pull request if you have documentation you believe would be useful.
I am trying to understand subprotocols using client/server example
I just modify https://github.com/gorilla/websocket/blob/master/examples/echo/server.go#L23
c, err := upgrader.Upgrade(w, r, r.Header)
in the terminal show upgrade:websocket: application specific 'Sec-WebSocket-Extensions' headers are unsupported
@marti1125 It looks like you added a Sec-WebSocket-Extensions header, but that header is unrelated to subprotocols. Did you you intend to add a Sec-Websocket-Protocol instead?