🚀构建分布式即时聊天、消息推送系统。 Building distributed instant messaging, push notification systems.
Gopusher 是一个支持分布式部署的通用长连接接入层服务,接管客户端连接。Gopusher Comet is a access layer service that handling all client persistent connections with distributed cluster deployment.
你可以很容易的使用 http api 来构建实时聊天,通知推送等应用。You can use http api to develop a instant messaging application or a push notification application easily.
demo: https://chat.yadou.net
这是一个用php开发的聊天应用(源码),采用comet作为长连接接入层,采用php开发聊天的路由和逻辑层部分。
This is a chat application developed in php (code souce), using comet service to handle all client persistent connections, and using php language develop the chat routing and logical layer.
https://golang.org/doc/install
下载项目源码。download comet souce code.
CGO_ENABLED=0 go build -ldflags '-s -w' -o gopusher main.go
mac上编译linux版本, build linux bin file on mac
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags '-s -w' -o gopusher-for-linux main.go
Edit
vim config.yaml
app_name: gateway
app_debug: true
logging:
level: warn
log_file: ""
api_server:
address: 0.0.0.0:8080
token: "token"
redis:
default:
addr: 127.0.0.1:6379
password: ""
db: 0
dingtalk:
default:
token: "xx"
secret: "yy"
node: gateway-01
server.websocket:
app_key: "app_key_1"
app_secret: "app_secret_1"
address: :8900
ssl: false
ssl_cert_file: ""
ssl_key_file: ""
client_id_alias: "client_id"
token_alias: "token"
time_alias: "time"
time_window: 5
./gopusher start -c config.yaml
到现在为止,你已经可以使用gopusher了,并采用你喜欢的语言进行接入开发你的长连接应用了。So far, you can already use gopusher service and develop your persistent connections application with your favorite program language.
Build docker image
docker build -t gopusher .
Run
docker run --rm -it -v $(pwd)/config.yaml:/app/config.yaml --net=host gopusher gopusher start
如果你需要采用集群的方式运行,你可以采用nginx等来做负载均衡。If you need to run comet cluster, you can use nginx, etc. for load balancing.
upstream websocket {
server 192.168.3.165:8900 weight=1;
server 192.168.3.165:8902 weight=1;
}
server {
listen 8910;
server_name www.chat.com$;
location / {
proxy_pass http://websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
你也可以采用服务器下发 gopusher ip port 的方式来进行负载均衡,you can also use the method of sending the gopusher ip port to load balance.
Words 'chat' and 'instant messaging' in Chinese, Russian, Persian and a few other languages.