waggy
ws
waggy | ws | |
---|---|---|
8 | 14 | |
38 | 5,969 | |
- | - | |
3.0 | 5.6 | |
about 1 year ago | 3 days ago | |
Go | Go | |
BSD 3-clause "New" or "Revised" License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
waggy
-
what's your recommended router? chi, mux, something else?
Chi for work, my own router for personal projects
-
Waggy hits v0.8.0 with support for custom middleware, listening and serving on a specific host and port address, and more!!
And in that time, I’ve gotten the router I’ve been working on, Waggy, up to a new version of v0.8.0!! Along with some minor bug fixes, some refactoring, and restructuring changes, there is now full support for custom middleware and listening and serving on a specific host:port address.
-
What mux/router to use now a days?
For work, we’ve switched to Chi. For personal projects, I use a router I’ve been built and have been working on myself
-
Gorilla Web Toolkit is now in archive only mode
I have a library that I’ve been working on for a different environment (WASM specifically), but I can be used as a regular HTTP router and provides access to URL path params. Check it out here
-
Waggy v0.3 Released!!
Waggy v0.3 is out now!! Along with some minor bug fixes, v0.3 comes with two major improvements, being the ability to configure loggers for WaggyRouters and WaggyHandlers alike, as well as a convenience wrapper for serving files as responses. One other big unplanned, but welcome improvement is the ability to use Waggy in conjunction with Fermyon’s Spin Go SDK for writing WAGI microservices that can also make outgoing HTTP calls.
-
Waggy v2 Release
Waggy has released v2!!
-
The best Go framework: no framework? (Three Dots Tech)
With the rising popularity of WASM, I’d probably use something like wazero coupled with the library I just wrote and released, waggy for writing the individual handlers for each route, though.
- Waggy: A dead simple library for writing WAGI API Handlers in Go
ws
-
Websocket memory usage
Then take a look at this article - https://www.freecodecamp.org/news/million-websockets-and-go-cc58418460bb/ - using external from Go std lib epoll implementation and https://github.com/gobwas/ws lib it's possible to reduce memory usage per connection drastically. Though keep in mind that this approach is not obvious to implement right and you better to go with STD lib.
-
Elixir or golang which wiil be good for large websocket connections.
Yes, but there are two excelent libs for golang websockets - https://github.com/gobwas/ws - https://github.com/centrifugal/centrifuge
- WebSocket library for Go – gobwas/ws – Release v1.2.0
- Release v1.2.0 · gobwas/ws - WebSocket library for Go.
-
Is there an alternative to gorilla websocket?
Yes, I find https://github.com/gobwas/ws to be far superior. It has a lot more ability to customize and get high performance as well as a utility package that is much higher level and makes it easy to use. It doesn't have some of the problems of gorilla because they didn't have to support people already depending on it
- Gorilla Web Toolkit is now in archive only mode
-
Gorilla toolkit maintainers are stepping down and have been looking for new maintainers. The project could otherwise be archived.
There's https://github.com/gobwas/ws and https://github.com/nhooyr/websocket but neither have seen a commit in over a year
-
Centrifugo v4 released – with own WebSocket emulation layer, optimized client protocol, unified SDK behavior, experimental HTTP/3 and WebTransport support
Oh, thanks! And sorry for still not switching to https://github.com/gobwas/ws :)
-
TCP or websockets for chat server
Hello, +1 to WebSockets. If you need to choose WS library – go with https://github.com/gorilla/websocket or https://github.com/gobwas/ws. You can also look at Centrifugo server (https://centrifugal.dev/, supports WebSocket, SockJS bidi transports, also EventSource, HTTP-streaming, GRPC unidirectional transports and many builtin features) or https://github.com/centrifugal/centrifuge Go library.
-
How does TCP connection in net package handle disconnects?
I prefer gobwas/ws because it has the high level "easy mode" (though some things will still be a small learning curve if you are used to REST mostly) and a low level API that you can dive into if you need very high performance and don't mind getting deeply into the details. It has the advantage of being written much after the most popular Gorilla websocket implementation which has some complexity and other issues that it can't totally remove in order to keep compatibility for all of its many users. It's also battle-tested via mail.ru. See A Million Websocket and Go for more details on its inception.
What are some alternatives?
gorilla-mux - A fork of gorilla/mux, the powerful HTTP router and URL matcher for building Go web servers with 🦍
1m-go-websockets - handling 1M websockets connections in Go
httprouter - A high performance HTTP request router that scales well
nbio - Pure Go 1000k+ connections solution, support tls/http1.x/websocket and basically compatible with net/http, with high-performance and low memory cost, non-blocking, event-driven, easy-to-use.
jwtauth - JWT authentication middleware for Go HTTP services
Mercure - 🪽 An open, easy, fast, reliable and battery-efficient solution for real-time communications
otelchi - OpenTelemetry instrumentation for go-chi/chi
websocket - Minimal and idiomatic WebSocket library for Go
spin - Spin is the open source developer tool for building and running serverless applications powered by WebAssembly.
websocket - A fast, well-tested and widely used WebSocket implementation for Go.
mux - A powerful HTTP router and URL matcher for building Go web servers with 🦍
fast - Check your internet speed/bandwidth right from your terminal. Built on Golang using chromedp