good morning!!!!

Skip to content
Snippets Groups Projects
Select Git revision
  • dev
  • master default protected
  • docs
  • v1.10.0
  • v1.9.1
  • v1.9.2
  • v1.9.0
  • v1.8.7
  • v1.8.6
  • v1.8.5
  • v1.8.4
  • v1.8.3
  • v1.8.2
  • v1.8.1
  • v1.8.0
  • v1.7.4
  • v1.7.3
  • v1.7.2
  • v1.7.1
  • v1.7.0
  • v1.6.5
  • v1.6.4
  • v1.6.3
23 results

websocket

  • Clone with SSH
  • Clone with HTTPS
  • Forked from github / nhooyr / websocket
    193 commits behind, 1 commit ahead of the upstream repository.
    user avatar
    Anmol Sethi authored
    c5660ae3
    History

    websocket

    godoc coverage

    websocket is a minimal and idiomatic WebSocket library for Go.

    Install

    go get nhooyr.io/websocket

    Highlights

    Roadmap

    • HTTP/2 #4

    Examples

    For a production quality example that demonstrates the complete API, see the echo example.

    For a full stack example, see the chat example.

    Server

    http.HandlerFunc(func (w http.ResponseWriter, r *http.Request) {
    	c, err := websocket.Accept(w, r, nil)
    	if err != nil {
    		// ...
    	}
    	defer c.Close(websocket.StatusInternalError, "the sky is falling")
    
    	ctx, cancel := context.WithTimeout(r.Context(), time.Second*10)
    	defer cancel()
    
    	var v interface{}
    	err = wsjson.Read(ctx, c, &v)
    	if err != nil {
    		// ...
    	}
    
    	log.Printf("received: %v", v)
    
    	c.Close(websocket.StatusNormalClosure, "")
    })

    Client

    ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
    defer cancel()
    
    c, _, err := websocket.Dial(ctx, "ws://localhost:8080", nil)
    if err != nil {
    	// ...
    }
    defer c.Close(websocket.StatusInternalError, "the sky is falling")
    
    err = wsjson.Write(ctx, c, "hi")
    if err != nil {
    	// ...
    }
    
    c.Close(websocket.StatusNormalClosure, "")

    Comparison

    gorilla/websocket

    Advantages of gorilla/websocket:

    Advantages of nhooyr.io/websocket:

    golang.org/x/net/websocket

    golang.org/x/net/websocket is deprecated. See golang/go/issues/18152.

    The net.Conn can help in transitioning to nhooyr.io/websocket.

    gobwas/ws

    gobwas/ws has an extremely flexible API that allows it to be used in an event driven style for performance. See the author's blog post.

    However when writing idiomatic Go, nhooyr.io/websocket will be faster and easier to use.