diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e9b4b5f6..13ddbf3e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,8 +20,6 @@ jobs: - uses: actions/checkout@v4 - run: go version - uses: actions/setup-go@v5 - with: - go-version-file: ./go.mod - run: ./ci/lint.sh test: diff --git a/README.md b/README.md index d093746d..c3502fa2 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,14 @@ # websocket -[](https://pkg.go.dev/nhooyr.io/websocket) -[](https://nhooyr.io/websocket/coverage.html) +[](https://pkg.go.dev/github.com/coder/websocket) +[](https://github.com/coder/websocket/coverage.html) websocket is a minimal and idiomatic WebSocket library for Go. ## Install ```sh -go get nhooyr.io/websocket +go get github.com/coder/websocket ``` ## Highlights @@ -16,16 +16,16 @@ go get nhooyr.io/websocket - Minimal and idiomatic API - First class [context.Context](https://blog.golang.org/context) support - Fully passes the WebSocket [autobahn-testsuite](https://github.com/crossbario/autobahn-testsuite) -- [Zero dependencies](https://pkg.go.dev/nhooyr.io/websocket?tab=imports) -- JSON helpers in the [wsjson](https://pkg.go.dev/nhooyr.io/websocket/wsjson) subpackage +- [Zero dependencies](https://pkg.go.dev/github.com/coder/websocket?tab=imports) +- JSON helpers in the [wsjson](https://pkg.go.dev/github.com/coder/websocket/wsjson) subpackage - Zero alloc reads and writes - Concurrent writes -- [Close handshake](https://pkg.go.dev/nhooyr.io/websocket#Conn.Close) -- [net.Conn](https://pkg.go.dev/nhooyr.io/websocket#NetConn) wrapper -- [Ping pong](https://pkg.go.dev/nhooyr.io/websocket#Conn.Ping) API +- [Close handshake](https://pkg.go.dev/github.com/coder/websocket#Conn.Close) +- [net.Conn](https://pkg.go.dev/github.com/coder/websocket#NetConn) wrapper +- [Ping pong](https://pkg.go.dev/github.com/coder/websocket#Conn.Ping) API - [RFC 7692](https://tools.ietf.org/html/rfc7692) permessage-deflate compression -- [CloseRead](https://pkg.go.dev/nhooyr.io/websocket#Conn.CloseRead) helper for write only connections -- Compile to [Wasm](https://pkg.go.dev/nhooyr.io/websocket#hdr-Wasm) +- [CloseRead](https://pkg.go.dev/github.com/coder/websocket#Conn.CloseRead) helper for write only connections +- Compile to [Wasm](https://pkg.go.dev/github.com/coder/websocket#hdr-Wasm) ## Roadmap @@ -102,14 +102,14 @@ Advantages of [gorilla/websocket](https://github.com/gorilla/websocket): - Mature and widely used - [Prepared writes](https://pkg.go.dev/github.com/gorilla/websocket#PreparedMessage) - Configurable [buffer sizes](https://pkg.go.dev/github.com/gorilla/websocket#hdr-Buffers) -- No extra goroutine per connection to support cancellation with context.Context. This costs nhooyr.io/websocket 2 KB of memory per connection. +- No extra goroutine per connection to support cancellation with context.Context. This costs github.com/coder/websocket 2 KB of memory per connection. - Will be removed soon with [context.AfterFunc](https://github.com/golang/go/issues/57928). See [#411](https://github.com/nhooyr/websocket/issues/411) -Advantages of nhooyr.io/websocket: +Advantages of github.com/coder/websocket: - Minimal and idiomatic API - - Compare godoc of [nhooyr.io/websocket](https://pkg.go.dev/nhooyr.io/websocket) with [gorilla/websocket](https://pkg.go.dev/github.com/gorilla/websocket) side by side. -- [net.Conn](https://pkg.go.dev/nhooyr.io/websocket#NetConn) wrapper + - Compare godoc of [github.com/coder/websocket](https://pkg.go.dev/github.com/coder/websocket) with [gorilla/websocket](https://pkg.go.dev/github.com/gorilla/websocket) side by side. +- [net.Conn](https://pkg.go.dev/github.com/coder/websocket#NetConn) wrapper - Zero alloc reads and writes ([gorilla/websocket#535](https://github.com/gorilla/websocket/issues/535)) - Full [context.Context](https://blog.golang.org/context) support - Dial uses [net/http.Client](https://golang.org/pkg/net/http/#Client) @@ -117,24 +117,24 @@ Advantages of nhooyr.io/websocket: - Gorilla writes directly to a net.Conn and so duplicates features of net/http.Client. - Concurrent writes - Close handshake ([gorilla/websocket#448](https://github.com/gorilla/websocket/issues/448)) -- Idiomatic [ping pong](https://pkg.go.dev/nhooyr.io/websocket#Conn.Ping) API +- Idiomatic [ping pong](https://pkg.go.dev/github.com/coder/websocket#Conn.Ping) API - Gorilla requires registering a pong callback before sending a Ping - Can target Wasm ([gorilla/websocket#432](https://github.com/gorilla/websocket/issues/432)) -- Transparent message buffer reuse with [wsjson](https://pkg.go.dev/nhooyr.io/websocket/wsjson) subpackage +- Transparent message buffer reuse with [wsjson](https://pkg.go.dev/github.com/coder/websocket/wsjson) subpackage - [1.75x](https://github.com/nhooyr/websocket/releases/tag/v1.7.4) faster WebSocket masking implementation in pure Go - Gorilla's implementation is slower and uses [unsafe](https://golang.org/pkg/unsafe/). Soon we'll have assembly and be 3x faster [#326](https://github.com/nhooyr/websocket/pull/326) - Full [permessage-deflate](https://tools.ietf.org/html/rfc7692) compression extension support - Gorilla only supports no context takeover mode -- [CloseRead](https://pkg.go.dev/nhooyr.io/websocket#Conn.CloseRead) helper for write only connections ([gorilla/websocket#492](https://github.com/gorilla/websocket/issues/492)) +- [CloseRead](https://pkg.go.dev/github.com/coder/websocket#Conn.CloseRead) helper for write only connections ([gorilla/websocket#492](https://github.com/gorilla/websocket/issues/492)) #### golang.org/x/net/websocket [golang.org/x/net/websocket](https://pkg.go.dev/golang.org/x/net/websocket) is deprecated. See [golang/go/issues/18152](https://github.com/golang/go/issues/18152). -The [net.Conn](https://pkg.go.dev/nhooyr.io/websocket#NetConn) can help in transitioning -to nhooyr.io/websocket. +The [net.Conn](https://pkg.go.dev/github.com/coder/websocket#NetConn) can help in transitioning +to github.com/coder/websocket. #### gobwas/ws @@ -143,7 +143,7 @@ in an event driven style for performance. See the author's [blog post](https://m However it is quite bloated. See https://pkg.go.dev/github.com/gobwas/ws -When writing idiomatic Go, nhooyr.io/websocket will be faster and easier to use. +When writing idiomatic Go, github.com/coder/websocket will be faster and easier to use. #### lesismal/nbio @@ -152,4 +152,4 @@ event driven for performance reasons. However it is quite bloated. See https://pkg.go.dev/github.com/lesismal/nbio -When writing idiomatic Go, nhooyr.io/websocket will be faster and easier to use. +When writing idiomatic Go, github.com/coder/websocket will be faster and easier to use. diff --git a/accept.go b/accept.go index 285b3103..f672a730 100644 --- a/accept.go +++ b/accept.go @@ -17,7 +17,7 @@ import ( "path/filepath" "strings" - "nhooyr.io/websocket/internal/errd" + "github.com/coder/websocket/internal/errd" ) // AcceptOptions represents Accept's options. diff --git a/accept_test.go b/accept_test.go index 18233b1e..4f799126 100644 --- a/accept_test.go +++ b/accept_test.go @@ -13,8 +13,8 @@ import ( "sync" "testing" - "nhooyr.io/websocket/internal/test/assert" - "nhooyr.io/websocket/internal/test/xrand" + "github.com/coder/websocket/internal/test/assert" + "github.com/coder/websocket/internal/test/xrand" ) func TestAccept(t *testing.T) { diff --git a/autobahn_test.go b/autobahn_test.go index 57ceebd5..b1b3a7e9 100644 --- a/autobahn_test.go +++ b/autobahn_test.go @@ -17,11 +17,11 @@ import ( "testing" "time" - "nhooyr.io/websocket" - "nhooyr.io/websocket/internal/errd" - "nhooyr.io/websocket/internal/test/assert" - "nhooyr.io/websocket/internal/test/wstest" - "nhooyr.io/websocket/internal/util" + "github.com/coder/websocket" + "github.com/coder/websocket/internal/errd" + "github.com/coder/websocket/internal/test/assert" + "github.com/coder/websocket/internal/test/wstest" + "github.com/coder/websocket/internal/util" ) var excludedAutobahnCases = []string{ diff --git a/close.go b/close.go index 31504b0e..ff2e878a 100644 --- a/close.go +++ b/close.go @@ -11,7 +11,7 @@ import ( "net" "time" - "nhooyr.io/websocket/internal/errd" + "github.com/coder/websocket/internal/errd" ) // StatusCode represents a WebSocket status code. diff --git a/close_test.go b/close_test.go index 6bf3c256..aec582c1 100644 --- a/close_test.go +++ b/close_test.go @@ -9,7 +9,7 @@ import ( "strings" "testing" - "nhooyr.io/websocket/internal/test/assert" + "github.com/coder/websocket/internal/test/assert" ) func TestCloseError(t *testing.T) { diff --git a/compress_test.go b/compress_test.go index 667e1408..d97492cf 100644 --- a/compress_test.go +++ b/compress_test.go @@ -10,8 +10,8 @@ import ( "strings" "testing" - "nhooyr.io/websocket/internal/test/assert" - "nhooyr.io/websocket/internal/test/xrand" + "github.com/coder/websocket/internal/test/assert" + "github.com/coder/websocket/internal/test/xrand" ) func Test_slidingWindow(t *testing.T) { diff --git a/conn_test.go b/conn_test.go index 2b44ad22..be7c9983 100644 --- a/conn_test.go +++ b/conn_test.go @@ -16,13 +16,13 @@ import ( "testing" "time" - "nhooyr.io/websocket" - "nhooyr.io/websocket/internal/errd" - "nhooyr.io/websocket/internal/test/assert" - "nhooyr.io/websocket/internal/test/wstest" - "nhooyr.io/websocket/internal/test/xrand" - "nhooyr.io/websocket/internal/xsync" - "nhooyr.io/websocket/wsjson" + "github.com/coder/websocket" + "github.com/coder/websocket/internal/errd" + "github.com/coder/websocket/internal/test/assert" + "github.com/coder/websocket/internal/test/wstest" + "github.com/coder/websocket/internal/test/xrand" + "github.com/coder/websocket/internal/xsync" + "github.com/coder/websocket/wsjson" ) func TestConn(t *testing.T) { diff --git a/dial.go b/dial.go index e4c4daa1..ad61a35d 100644 --- a/dial.go +++ b/dial.go @@ -17,7 +17,7 @@ import ( "sync" "time" - "nhooyr.io/websocket/internal/errd" + "github.com/coder/websocket/internal/errd" ) // DialOptions represents Dial's options. diff --git a/dial_test.go b/dial_test.go index 237a2874..f94cd73b 100644 --- a/dial_test.go +++ b/dial_test.go @@ -15,10 +15,10 @@ import ( "testing" "time" - "nhooyr.io/websocket" - "nhooyr.io/websocket/internal/test/assert" - "nhooyr.io/websocket/internal/util" - "nhooyr.io/websocket/internal/xsync" + "github.com/coder/websocket" + "github.com/coder/websocket/internal/test/assert" + "github.com/coder/websocket/internal/util" + "github.com/coder/websocket/internal/xsync" ) func TestBadDials(t *testing.T) { diff --git a/doc.go b/doc.go index 2ab648a6..03edf129 100644 --- a/doc.go +++ b/doc.go @@ -15,7 +15,7 @@ // // The wsjson subpackage contain helpers for JSON and protobuf messages. // -// More documentation at https://nhooyr.io/websocket. +// More documentation at https://github.com/coder/websocket. // // # Wasm // @@ -31,4 +31,4 @@ // - Conn.CloseNow is Close(StatusGoingAway, "") // - HTTPClient, HTTPHeader and CompressionMode in DialOptions are no-op // - *http.Response from Dial is &http.Response{} with a 101 status code on success -package websocket // import "nhooyr.io/websocket" +package websocket // import "github.com/coder/websocket" diff --git a/example_test.go b/example_test.go index 590c0411..4cc0cf11 100644 --- a/example_test.go +++ b/example_test.go @@ -6,8 +6,8 @@ import ( "net/http" "time" - "nhooyr.io/websocket" - "nhooyr.io/websocket/wsjson" + "github.com/coder/websocket" + "github.com/coder/websocket/wsjson" ) func ExampleAccept() { diff --git a/export_test.go b/export_test.go index a644d8f0..d3443991 100644 --- a/export_test.go +++ b/export_test.go @@ -6,7 +6,7 @@ package websocket import ( "net" - "nhooyr.io/websocket/internal/util" + "github.com/coder/websocket/internal/util" ) func (c *Conn) RecordBytesWritten() *int { diff --git a/frame.go b/frame.go index d5631863..e7ab76be 100644 --- a/frame.go +++ b/frame.go @@ -9,7 +9,7 @@ import ( "io" "math" - "nhooyr.io/websocket/internal/errd" + "github.com/coder/websocket/internal/errd" ) // opcode represents a WebSocket opcode. diff --git a/frame_test.go b/frame_test.go index bd626358..08874cb5 100644 --- a/frame_test.go +++ b/frame_test.go @@ -13,7 +13,7 @@ import ( "testing" "time" - "nhooyr.io/websocket/internal/test/assert" + "github.com/coder/websocket/internal/test/assert" ) func TestHeader(t *testing.T) { diff --git a/go.mod b/go.mod index 715a9f7a..336411a5 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,3 @@ -module nhooyr.io/websocket +module github.com/coder/websocket go 1.19 diff --git a/internal/examples/chat/README.md b/internal/examples/chat/README.md index 574c6994..4d354586 100644 --- a/internal/examples/chat/README.md +++ b/internal/examples/chat/README.md @@ -1,6 +1,6 @@ # Chat Example -This directory contains a full stack example of a simple chat webapp using nhooyr.io/websocket. +This directory contains a full stack example of a simple chat webapp using github.com/coder/websocket. ```bash $ cd examples/chat diff --git a/internal/examples/chat/chat.go b/internal/examples/chat/chat.go index 8b1e30c1..3cb1e021 100644 --- a/internal/examples/chat/chat.go +++ b/internal/examples/chat/chat.go @@ -12,7 +12,7 @@ import ( "golang.org/x/time/rate" - "nhooyr.io/websocket" + "github.com/coder/websocket" ) // chatServer enables broadcasting to a set of subscribers. diff --git a/internal/examples/chat/chat_test.go b/internal/examples/chat/chat_test.go index f80f1de1..8eb72051 100644 --- a/internal/examples/chat/chat_test.go +++ b/internal/examples/chat/chat_test.go @@ -14,7 +14,7 @@ import ( "golang.org/x/time/rate" - "nhooyr.io/websocket" + "github.com/coder/websocket" ) func Test_chatServer(t *testing.T) { diff --git a/internal/examples/chat/index.html b/internal/examples/chat/index.html index 64edd286..7038342d 100644 --- a/internal/examples/chat/index.html +++ b/internal/examples/chat/index.html @@ -2,7 +2,7 @@
-Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: