Go to file
Colin a4f41768ba
Optimize WebSocket implementation for millions of connections
- Implement sharded client storage (256 shards by default) to eliminate mutex contention
- Replace slice-based storage with map structure for O(1) token lookup
- Increase WebSocket buffer sizes (8192 bytes) and channel buffers (10 messages)
- Optimize Notify method with per-shard locking
- Add configuration options for shard count and buffer sizes
- Add comprehensive benchmarking setup with docker-compose
- Include k6 load testing scripts for WebSocket performance testing
- All existing tests pass with new sharded implementation
2025-11-20 14:43:33 -05:00
.github chore(deps): update golangci/golangci-lint-action action to v9 2025-11-16 11:49:28 +01:00
api Optimize WebSocket implementation for millions of connections 2025-11-20 14:43:33 -05:00
auth chore: Migrate github.com/jinzhu/gorm to gorm.io/gorm (#863) 2025-10-29 22:23:10 +00:00
benchmark Optimize WebSocket implementation for millions of connections 2025-11-20 14:43:33 -05:00
config Optimize WebSocket implementation for millions of connections 2025-11-20 14:43:33 -05:00
database chore: Migrate github.com/jinzhu/gorm to gorm.io/gorm (#863) 2025-10-29 22:23:10 +00:00
docker chore(deps): update dependency node to v24 (#868) 2025-11-01 05:12:43 +00:00
docs fix: update go-swagger 2023-09-16 21:06:54 +02:00
error chore(deps): update bump go dependencies (#751) 2025-01-17 05:51:08 +00:00
mode Use golangci-lint 2020-11-01 10:47:02 +01:00
model chore: Migrate github.com/jinzhu/gorm to gorm.io/gorm (#863) 2025-10-29 22:23:10 +00:00
plugin chore: Migrate github.com/jinzhu/gorm to gorm.io/gorm (#863) 2025-10-29 22:23:10 +00:00
router Optimize WebSocket implementation for millions of connections 2025-11-20 14:43:33 -05:00
runner chore: Migrate github.com/jinzhu/gorm to gorm.io/gorm (#863) 2025-10-29 22:23:10 +00:00
test chore(deps): update bump go dependencies (#751) 2025-01-17 05:51:08 +00:00
ui fix: hide delete overlay for default app images 2025-11-16 11:27:28 +01:00
.dockerignore Docker multiarch image (#703) 2024-10-22 16:14:59 -05:00
.editorconfig Add .editorconfig file. 2020-02-11 17:27:22 +01:00
.gitignore Change default folder & db path to data/* 2018-05-10 12:34:35 +02:00
.golangci.yml chore(deps): update golangci/golangci-lint-action action to v7 (#787) 2025-03-31 22:26:40 +00:00
CODEOWNERS Add code owners 2019-03-16 14:28:09 +01:00
CODE_OF_CONDUCT.md Add code of conduct 2018-03-02 21:04:51 +01:00
CONTRIBUTING.md improve CONTRIBUTING.md (#181) 2019-04-04 23:03:21 +08:00
GO_VERSION chore(deps): update docker.io/gotify/build docker tag to v1.25.1 2025-09-12 19:20:22 +00:00
LICENSE Use logo from gotify/logo. 2019-03-08 16:03:34 +01:00
Makefile ci: don't use GOTOOLCHAIN for getting gotify/build image 2025-09-13 10:29:04 +02:00
README.md docs: smaller logo 2025-08-09 14:18:40 +02:00
SECURITY.md Create SECURITY.md 2021-09-26 20:46:58 +00:00
app.go chore(deps): update bump go dependencies (#751) 2025-01-17 05:51:08 +00:00
config.example.yml feat: refine AutoCert logic (#843) 2025-09-19 04:43:09 -05:00
docker-compose.benchmark.yml Optimize WebSocket implementation for millions of connections 2025-11-20 14:43:33 -05:00
go.mod chore(deps): update bump go dependencies (#871) 2025-11-19 22:30:12 +00:00
go.sum chore(deps): update bump go dependencies (#871) 2025-11-19 22:30:12 +00:00
renovate.json Cleaner chain of authority for golang update (gotify/build -> go.mod -> GO_VERSION) (#780) 2025-03-12 23:37:23 +00:00
ui.png [ImgBot] Optimize images 2019-01-20 12:00:36 +01:00

README.md

gotify/server

Build Status codecov Go Report Card Matrix Docker Pulls latest release

Intro

We wanted a simple server for sending and receiving messages (in real time per WebSocket). For this, not many open source projects existed and most of the existing ones were abandoned. Also, a requirement was that it can be self-hosted. We know there are many free and commercial push services out there.

Features

Gotify UI screenshot
  • send messages via REST-API
  • receive messages via WebSocket
  • manage users, clients and applications
  • Plugins
  • Web-UI -> ./ui
  • CLI for sending messages -> gotify/cli
  • Android-App -> gotify/android

Get it on Google Play Get it on F-Droid

(Google Play and the Google Play logo are trademarks of Google LLC.)


Documentation

InstallConfigurationREST-APISetup Dev Environment

Contributing

We welcome all kinds of contribution, including bug reports, feature requests, documentation improvements, UI refinements, etc. Check out CONTRIBUTING.md for guidelines.

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

License

This project is licensed under the MIT License - see the LICENSE file for details