Skip to content
/ goim Public
forked from Terry-Mao/goim

goim 是一个支持集群的im及实时推送服务(支持websocket,http和tcp协议) 特性: 轻量级 高性能 纯Golang实现 支持单个、多个以及广播消息推送 支持单个Key多个订阅者(可限制订阅者最大人数) 心跳支持(应用心跳和tcp、keepalive、http log pulling) 支持安全验证(未授权用户不能订阅) 多协议支持(websocket,tcp,http) 可拓扑的架构(job、logic模块可动态无限扩展) 基于Kafka做异步消息推送

License

Notifications You must be signed in to change notification settings

baidule/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 OS Instance
Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHz DDR3 32GB Debian GNU/Linux 8 1

Benchmark Case

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

Benchmark Resource

  • CPU: 2000%~2300%
  • Memory: 14GB
  • GC Pause: 504ms
  • Network: Incoming(450MBit/s), Outgoing(4.39GBit/s)

Benchmark Result

  • Received: 35,900,000/s

中文

English

LICENSE

goim is is distributed under the terms of the MIT License.

About

goim 是一个支持集群的im及实时推送服务(支持websocket,http和tcp协议) 特性: 轻量级 高性能 纯Golang实现 支持单个、多个以及广播消息推送 支持单个Key多个订阅者(可限制订阅者最大人数) 心跳支持(应用心跳和tcp、keepalive、http log pulling) 支持安全验证(未授权用户不能订阅) 多协议支持(websocket,tcp,http) 可拓扑的架构(job、logic模块可动态无限扩展) 基于Kafka做异步消息推送

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%