Files
chain33-im/README.md
2022-03-17 15:55:27 +08:00

66 lines
1.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

goim v2.0
==============
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 (WebSocketTCPHTTP
* Scalable architecture (Unlimited dynamic `comet` and `logic` modules)
* Asynchronous push notification based on Kafka
## Architecture
![arch](./docs/goim-arch.png)
## Quick Start
### Dependencies
* kakfa: 消息队列
* redis: 保存客户端连接信息
* etcd: 提供服务注册/发现, comet、logic 服务注册在 etcd
docker 快速启动相关依赖:
```
docker-compose -f benchmarks/kafka-docker-compose.yml up -d
docker run -d -p 6379:6379 redis
docker run -d -p 2379:2379 -p 2380:2380 --name etcd-v3.4.13 quay.io/coreos/etcd:v3.4.13 /usr/local/bin/etcd \
--name s1 \
--data-dir /etcd-data \
--listen-client-urls http://0.0.0.0:2379 \
--advertise-client-urls http://0.0.0.0:2379 \
--listen-peer-urls http://0.0.0.0:2380 \
--initial-advertise-peer-urls http://0.0.0.0:2380 \
--initial-cluster s1=http://0.0.0.0:2380 \
--initial-cluster-token tkn \
--initial-cluster-state new \
--log-level info \
--logger zap \
--log-outputs stderr
```
### Build
```
make build
```
### Run
```
make run
make stop
// or
nohup target/logic -conf=target/logic.toml -logtostderr 2>&1 > target/logic.log &
nohup target/comet -conf=target/comet.toml -logtostderr 2>&1 > target/comet.log &
```
### Configuration
You can view the comments in `target/comet.toml`, `target/logic.toml` to understand the meaning of the config.
## Document
[Protocol](./docs/proto.md)