golang日志服务器_golang写的即时通讯服务器

本文介绍了使用Golang编写的即时通讯服务器gim,支持TCP和WebSocket接入,具备离线消息同步、多业务接入、单用户多设备在线、单聊群聊等功能。服务器采用Mysql+Redis作为数据库,使用grpc、jsoniter和zap等组件。文章详细讲解了安装部署、业务服务器接入、RPC接口、TCP拆包粘包机制,并提供了核心流程时序图。
摘要由CSDN通过智能技术生成

简要介绍

gim是一个即时通讯服务器,代码全部使用golang完成。主要功能

1.支持tcp,websocket接入

2.离线消息同步

3.多业务接入

4.单用户多设备同时在线

5.单聊,群聊,以及超大群聊天场景

6.支持服务水平扩展

使用技术:

数据库:Mysql+Redis

组件:grpc+jsoniter+zap

安装部署

1.首先安装MySQL,Redis

2.创建数据库gim,执行sql/create_table.sql,完成初始化表的创建(数据库包含提供测试的一些初始数据)

3.修改conf下配置文件,使之和你本地配置一致

4.分别切换到app的tcp_conn,ws_conn,logic目录下,执行go run main.go,启动TCP连接层服务器,WebSocket连接层服务器,逻辑层服务器

业务服务器如何接入

1.首先生成私钥和公钥

2.在app表里根据你的私钥添加一条app记录

3.将app_id和公钥保存到业务服务器

4.将用户通过LogicClientExtServer.AddUser接口添加到IM服务器

5.通过LogicClientExtServer.RegisterDevice接口注册设备,获取设备id(device_id)

6.将app_id,user_id,device_id用公钥通过公钥加密,生成token,相应库的代码在public/util/aes.go

7.接下来使用这个token,app就可以和IM服务器交互

rpc接口简介

项目所有的proto协议在gim/public/proto/目录下

1.tcp.proto

长连接通讯协议

2.logic_client.ext.proto

对客户端(Android设备,IOS设备)提供的rpc协议

3.logic_server.ext.proto

对业务服务器提供的rpc协议

4.logic.int.proto

对conn服务层提供的rpc协议

5.conn.int.proto

对logic服务层提供的rpc协议

项目目录介绍

├─ app # 服务启动入口

│ ├── tcp_conn # TCP连接层启动入口

| ├── ws_conn # WebSocket连接层启动入口

│ └── logic # 逻辑层启动入口

├─ conf # 配置

├─ tcp_conn # TCP连接层服务代码

├─ ws_conn # WebSocket连接层服务代码

├─ ligic # 逻辑层服务代码

│ ├── cache # 缓存,操作redis封装

| ├── dao # 操作数据库的封装

│ └── db # Redis以及MySQL实例

│ └── model # 模型层

│ └── service # 业务逻辑层

│ └── rpc # 对外提供的rpc接口

├─ public #

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值