Beispiel #1
0
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
}
Beispiel #2
0
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
}
Beispiel #3
0
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,
	}
}
Beispiel #4
0
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)
}
Beispiel #5
0
// 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
}