We use cookies to make your experience better.
TL;DR:
github.com/coder/websocket
.
nhooyr.io/websocket
import path as it's quite complete for most use cases.nhooyr/websocket is a minimal, idiomatic, and performant WebSocket library for Go. Its quality is proven by an official recommendation by the Go Authors and a long list of dependents including Traefik, Vault, and Cloudflare.
For library users, we do not plan on making any breaking API changes. The project’s high level goals remain the same, and we will focus our development efforts on bug fixes and performance improvements.
In the post-xz world, supply chain security and open source sustainability is top of mind for many of us. We believe that governance changes in popular libraries should be clearly explained.
The concept for nhooyr.io/websocket came to me when I was working at Coder in 2018 on their collaborative cloud editor. I had implemented an operational transformation websocket protocol in Go with gorilla/websocket.
It worked but I was not a fan of gorilla's API surface nor the callback approach for receiving pongs. I had much spare time back then and those two minor issues gave me the impetus to build a library suited to my minimal tastes.
I want to be clear though that I very much appreciate and respect the incredible impact the Gorilla project has had and continues to have on the Go community. Maintaining high quality open-source software for years without compensation is not easy.
I began work in March 2019. Coder even let me work on it after hours in their Austin, Texas office. I released v1 in June 2019. It had an excellent debut on hackernews. I've since added many more features and fixed many, many embarrassing bugs.
But alas it has been 5 years and it is now 2024. It will be clear to anyone paying attention to the issue tracker that I haven't been able to keep up despite my best efforts. My life, dreams and ambitions are very different than they were in 2019. I still deeply enjoy software but there is much else to life that I have also come to enjoy and wish to first develop mastery over.
One day many years from now I will return but right now I must let go.
To that end I am happy to hand the reins for nhooyr.io/websocket to Coder. I've known the founders and engineers at Coder for a very long time. I fully trust them to preserve the minimal and idiomatic nature of my library.
Sincerely,
nhooyr
We dedicate a small portion of our engineering resources to building and maintaining libraries with zero intrinsic commercial value. We see this open source work as good for the community, good for business, and plain fun.
As our projects become popular, they translate into new customers and more talented developers in our team. So, websocket will continue to be permissively licensed and designed with the needs of the broader user base (not Coder) in mind. We see the drivers of this library’s success as stability, reliability, and performance in that order.
We are grateful for nhooyr’s trust and are honored to serve the Go community. We welcome contributions in the form of issues and PRs here.
— Ammar
Enjoy what you read?
Subscribe to our newsletter
By signing up, you agree to our Privacy Policy and Terms of service.