8000 GitHub - feng-ran/goim: goim
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

feng-ran/goim

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

goim

goim is a im server writen by golang.

Features

  • 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

Architecture

arch

Protocol:

proto

Document

English

中文

Examples

Websocket: Websocket Client Demo

Android: Android

iOS: iOS

Benchmark

benchmark

Benchmark Server

CPU Memory Instance
Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHz DDR3 32GB 2

Benchmark Case

  • Online: 500,000(250,000 per server)
  • Duration: 15min
  • Push Speed: 50/s (broadcast room)
  • Push Message: {"test":1}
  • Received calc mode: 30s per times, total 30 times

Benchmark Resource

  • CPU: 1400%~2340%
  • Memory: 4.22GB
  • GC Pause: 77ms
  • Network: Incoming(302MBit/s), Outgoing(3.19GBit/s)

Benchmark Result

  • Received: 24,400,000/s, 12,200,000/s per server.

中文

English

LICENSE

goim is is distributed under the terms of the GNU General Public License, version 3.0 GPLv3

About

goim

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 98.9%
  • Other 1.1%
0