LiMaoIM

module
v0.0.0-...-325de3d Latest Latest
Warning

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

Go to latest
Published: Sep 23, 2021 License: MIT

README

LiMaoIM (Everything so easy)

This project is a simple and easy to use, powerful performance, simple design concept instant messaging service, fully custom protocol chat (Chat) system

中文文档

  • QQ group: 496193831
  • Website: http://www.limao.io
  • Source: https://github.com/lim-team/LiMaoIM
  • Protocol: LiMaoIM Protocol
  • Issues: https://github.com/lim-team/LiMaoIM/issues
  • Docs: http://www.limao.io/docs

Docs

Feature

  • Go language development, high performance and easy maintenance have both
  • The bottom layer is 100% open source
  • Binary protocol (supports customization), the packet size is extremely small, the minimum heartbeat packet is only 1 byte, the power consumption is small, the flow is small, and the transmission speed is fast
  • The message channel and message content are fully encrypted to prevent man-in-the-middle attacks and modify of message content.
  • Simple and easy to use, strong performance, MAC notebook stand-alone test more than 6w/sec message throughput, in order to achieve this performance and easy to use, completely independent message storage, no need to rely on third-party components, a single command can start the service
  • The tcp + ack mechanism is used to ensure that the message is stable and reliable without loss
  • Strong scalability Adopting the channel design concept, currently supports group channels, point-to-point channels, and you can customize channels according to your own business in the future. It can realize functions such as robot channels, customer service channels, etc
  • Multi-terminal synchronization, real-time synchronization of web, pc, app messages
  • TCP and Websocket are supported indiscriminately
  • Ten thousand people support
  • The message partition is permanently stored, and the message will not be lost when the device is uninstalled
  • Support offline pull in read mode

Quick start

Quick start
Run the server (Note: Because it rewrites the Go network library, this library is temporarily not supported by Windows. Windows recommends using Docker to run.)
$ go run cmd/app/main.go -e mode=test 

After the server is running, visit http://127.0.0.1:1516/api to view the api document

Client SDK

Android SDK: Android SDK (built-in simple demo)

iOS SDK: Open source from Star to 500 (please help us some Star, thanks 😄)

JS SDK: Star to 1000 open source (please help us some Star, thanks 😄)

note: Please check document for the use of SDK

Quick play

Log in to test1, test2 and test2 to send a message "hello" to test1

// Log in to test1
$ go run cmd/play/main.go -user=test1 
// Log in to test2
$ go run cmd/play/main.go -user=test2 

test2 sends the message hello to test1

$ >send hello to test1

Performance Testing

One-click pressure test

./bench.sh

My test results are as follows:

Achieve a throughput of 63420 messages per second, which is close to the pressure test data of redis!

goos: darwin
goarch: amd64
cpu: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz

SEND: 2021/06/29 15:05:49 duration: 10.605478656s - 12.096mb/s - 63420.051ops/s - 15.768us/op
Run via Docker Compose
$ docker-compose up 

Case (Note: The case is not open source)

Case experience

Screenshot of self-developed IM product case using this communication terminal

收发消息演示 正在输入 消息回执 消息回应 红包消息 转账消息 群管理 朋友圈 单人音视频 多人音视频

Directories

Path Synopsis
cmd
app
internal
db
lim
pkg
idutil
Package idutil implements utility functions for generating unique, randomized ids.
Package idutil implements utility functions for generating unique, randomized ids.
util
Package idutil implements utility functions for generating unique, randomized ids.
Package idutil implements utility functions for generating unique, randomized ids.

Jump to

Keyboard shortcuts

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