goim

module
v0.0.0-...-b1d5e39 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 9, 2015 License: MIT

README

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 5
Benchmark Case
  • Online: 500,000
  • Duration: 10min
  • Push Speed: 20/s (broadcast room)
  • Push Message: {"test":1}
Benchmark Resource
  • CPU: 2340% (almost all busy)
  • Memory: 2.65GB
  • GC Pause: 41ms
  • Network: Incoming(500MBit/s), Outgoing(780MBit/s)
Benchmark Result

5.6 million/second message received with 5 24c server, 1.2 million/second per server.

中文

English

LICENSE

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

Directories

Path Synopsis
benchmark
client command
multi_push command
push command
client command
examples
javascript command
libs
net
proto/comet
Package comet is a generated protocol buffer package.
Package comet is a generated protocol buffer package.
proto/logic
Package proto is a generated protocol buffer package.
Package proto is a generated protocol buffer package.
proto/router
Package proto is a generated protocol buffer package.
Package proto is a generated protocol buffer package.
job command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL