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

Packages

No packages published

Languages

  • Go 98.9%
  • Other 1.1%