func GetConnection(rw http.ResponseWriter, req *http.Request) (*connection, error) { var upgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, } upgrader.CheckOrigin = func(r *http.Request) bool { // allow all connections by default return true } conn := &connection{} for _, v := range req.Header["Connection"] { for _, i := range strings.Split(v, ",") { if strings.EqualFold(strings.TrimSpace(i), "upgrade") { webConn, err := upgrader.Upgrade(rw, req, nil) if err != nil { return nil, err } conn.webConn = webConn return conn, nil } } } conn.rw = rw return conn, nil }
func (this *Context) ToWebSocket(upgrader *websocket.Upgrader, header http.Header) (err error) { if upgrader == nil { upgrader = &websocket.Upgrader{} upgrader.CheckOrigin = func(_ *http.Request) bool { return true } upgrader.Error = func(w http.ResponseWriter, r *http.Request, status int, err error) { log.Println(err) http.Error(w, http.StatusText(status), status) } } this.WebSocket, err = upgrader.Upgrade(this.RootResponse(), this.Request, header) return }
func newWsHandler(c Config, r Responder) *wsHandler { u := websocket.Upgrader{} if c.Origin != "" { originChecker := glob.MustCompile(c.Origin) u.CheckOrigin = func(r *http.Request) bool { return originChecker.Match(r.Header.Get(headerOrigin)) } } return &wsHandler{ upgrader: u, config: c, responder: r, } }
func (self *websocketStruct) serveWsJson(ctx *httpserver.RequestContext) { if ctx.Request.Method != "GET" { http.Error(ctx.Writer, "Method not allowed", 405) return } u := new(websocket.Upgrader) u.CheckOrigin = func(r *http.Request) bool { return true } ws, err := u.Upgrade(ctx.Writer, ctx.Request, nil) if err != nil { log.Println(err) return } self.json.onNewConnection(ws) }
// NewServer returns an instance of a WsServer configuration. func NewServer(maxbytes int64, bufsize int, checkorigin bool) (error, *Server) { if maxbytes < 1 { return fmt.Errorf("Server Max Bytes cannot be less than 1, value given: %v", maxbytes), nil } u := websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, } if !checkorigin { u.CheckOrigin = checkOriginStub } s := &Server{ maxBytes: maxbytes, wsBufSize: bufsize, NewConn: make(chan *Connection, 10), upgrader: u, } return nil, s }