goim is a im server writen by golang.
- Light weight
- High performance
- Pure Golang
- Supports single push, multiple push and broadcasting
- Supports one key to multiple subscribers (Configurable maximum subscribers count)
- Supports heartbeats (Application heartbeats, TCP, KeepAlive, HTTP long pulling)
- Supports authentication (Unauthenticated user can't subscribe)
- Supports multiple protocols (WebSocket,TCP,HTTP)
- Scalable architecture (Unlimited dynamic job and logic modules)
- Asynchronous push notification based on Kafka
Protocol:
Websocket: Websocket Client Demo
Android: Android
iOS: iOS
CPU | Memory | Instance |
---|---|---|
Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHz | DDR3 32GB | 5 |
- Online: 500,000
- Duration: 10min
- Push Speed: 20/s (broadcast room)
- Push Message: {"test":1}
- CPU: 2340% (almost all busy)
- Memory: 2.65GB
- GC Pause: 41ms
- Network: Incoming(500MBit/s), Outgoing(780MBit/s)
5.6 million/second message received with 5 24c server, 1.2 million/second per server.
goim is is distributed under the terms of the GNU General Public License, version 3.0 GPLv3