简介
目录结构
重要解读
接口介绍
-登录
-注册
-退出登录
-群聊下拉获取记录
-私聊下拉获取记录
-群聊标注已读
-私聊标注已读
-获取好友列表
-查询朋友圈是否有更新
-查看朋友圈
-评论朋友圈
-发朋友圈
-删除朋友圈
-获取自身数据
-扫码-获取用户信息
-获取用户信息
-添加好友
-扫码查找群聊
-加入群聊
-删除好友
-个性设置
-发送私聊
-接收私聊
-发送群聊
-接收群聊
-语音/视频通话
-语音/视频通话结束
-发红包
-扫码转账
-支付密码设置
-账单查询
-头像上传
-好友备注
-好友拉黑
-好友解黑
-绑定手机和短信验证
-绑定邮箱和邮箱验证
-建立群聊
-获取群数据
-修改群名称
-修改群公告
-修改群备注
-修改在群里的昵称
-退出群聊
-解散群聊
-拉人进群
-踢出群成员
-添加群聊
-
简介
前后端交互使用websocket协议。
传输的数据类型:二进制/字节码。
数据压缩/解压支持:gzip
解码后的数据类型:Json。
前端←→后端:将json数据通过二进制方式发送,如果json数据大小超过预设阈值,开启压缩,后将压缩的数据传输。
前后端处理接收的数据:先尝试解压,解压成功/失败后直接序列化为json/结构体格式。
目录结构
yibaoim---------------项目目录
--static----------------静态资源
----bgm---------------背景音乐
----img----------------图片资源
------xiaohuanglian-小黄脸图片(1-142.png)
----qunliao
------img--------------群聊大头图片(命名方式:群聊数字id.png)
------qrcade----------群二维码(命名方式:群聊数字id.png)
----user
------img--------------用户大头图片(命名方式:用户数字id.png)
------qrcade----------用户二维码(命名方式:用户数字id.png)
------shoukuan------用户收款码(命名方式:用户数字id.png)
--templates----------模板资源
cinfig.txt-------------配置文件
func_all.go----------所有常用函数
main_main.go------主逻辑
main.go--------------程序入口
struct.go------------所有常用结构体
var.go----------------全局变量
重要解读
cinfig.txt配置文件
port=18083 这里配置程序端口
dbhost=127.0.0.1 这里配置 Mysql服务地址
dbport=3306 这里配置MySQL服务端口
dbuser=root 这里配置MySQL账户(必须root账号)
dbpass=MxDWLdNDM37FeDT3 这里配置MySQL root账户的密码
dbname=yibaoim 这里配置程序使用的MySQL数据库名
safeurl=yibaoim 这里配置后台安全入口
safeuser=yibaoim 这里配置后台账号名
safepass=yibaoim123 这里配置后台密码
homeurl=http://127.0.0.1:18083 这里配置程序web地址
admin=3 这里配置后台最高权限的用户id
修改config.txt文件配置后,需要重启程序才生效。
接口介绍
后端可接收处理的字段:
bs//(string类型) 用户标识,字符长度为88,由服务器生成,主要用在客户端链接服务端提供验证
hj//(string类型) 环境,有三个值 m代表web端 pc代表pc端 app代表app端
n//(string类型) 用户名 主要用在登录也作辅助字段
p//(string类型) 密码 主要用在登录
cmd//(string类型) 请求目的
s//(string类型) 辅助字段
num//(float64类型) 辅助字段
shu//(map[string]string类型) 一般用在资源传输
ping//(string类型) 发送心跳
k//(string类型) 用在传输大数据时分割传输
k2//(string类型) 用在传输大数据时分割传输,K2不为空则表示大数据传输完毕
前端应可接收处理的字段:
denglu//当此字段出现时,应显示登陆页面
zhuce//当此字段出现时,应显示注册页面
denglufail//当此字段出现时,应显示登陆失败页面
denglusuccess//当此字段出现时,bs 字段也会同时出现,表示登陆成功,应关闭登录页面,并将 bs 字段内容发送给后端进行二次识别
zhucesuccess//当此字段出现时,bs 字段也会同时出现,表示注册成功,应关闭注册页面,并将 bs 字段内容发送给后端进行二次识别
fanhui//字段是用户各种操作的结果,前端可自行处理
bs//新的标识 ,当此字段出现时,客户端应缓存此字段数据
id//用户数字id,当此字段出现时,客户端应缓存此字段数据
name//用户登录账号,当此字段出现时,客户端应缓存此字段数据
name2//用户昵称,当此字段出现时,客户端应缓存此字段数据
shouji//用户手机,当此字段出现时,客户端应缓存此字段数据
email//用户email,当此字段出现时,客户端应缓存此字段数据
qianming//用户签名,当此字段出现时,客户端应缓存此字段数据
sex//用户性别,当此字段出现时,客户端应缓存此字段数据
qmsg//群聊数据,当此字段出现时,客户端应缓存此字段数据 群聊类型<*>群聊时间戳(精确到毫秒)<*>发送人id<*>群id<*>发送人昵称<*>群名称<*>消息内容<**>
msg//私聊数据,当此字段出现时,客户端应缓存此字段数据 私聊类型<*>私聊时间戳(精确到毫秒)<*>发送人id<*>接收人id<*>发送人昵称<*>接收人昵称<*>消息内容<**>
haoyou//好友数据,当此字段出现时,客户端应缓存此字段数据
qun//群数据,当此字段出现时,客户端应缓存此字段数据,格式:群id*群名称(群人数)>
mm//类似cmd ,不同值代表不同的操作 一般 mm 字段出现时会伴随其他字段一起出现
i//辅助字段
yema//页码,一般用在分页查询时
pyq//朋友圈数据
me//空字段
name//记录用户登录账号
name2//记录用户昵称
shouji//记录用户手机
email//记录用户email
findsuccess//记录搜索用户的登录名
sid//记录搜索用户的id
nicheng//记录搜索用户的昵称
diqu//记录搜索用户的地区信息
xingbie//记录搜索用户的性别信息
qianming//记录搜索用户的签名信息
isfriend//该字段出现时,表示该用户是好友 一般用在查找用户时
nofriend//该字段出现时,表示该用户不是好友 一般用在查找用户时
heimingdan//该字段出现时,表示该用户在黑名单中 一般用在查找用户时
zhangdan//账单数据
登录
客户端首次链接或者断开重链服务器时应通过 bs 、hj 字段传输自身标识和当前环境。
服务器通过识别 bs 判断用户是否存在
-当不存在时:服务端返回一个空的 denglu 字段,提示前端显示登陆页面。
-当存在时,后端通过 bs 查找对应的用户 id
--如果 id 不存在,服务端返回一个空的 denglu 字段,提示前端显示登陆页面
--如果 id 存在,则生成一个新的 bs 标识来覆盖旧的 bs ,并返回以下字段数据:
bs//新的标识
id//用户数字id
name//用户登录账号
name2//用户昵称
shouji//用户手机
email//用户email
qianming//用户签名
sex//用户性别
登录数据传输:
客户端使用json以下三个字段,将数据发送给后端。
cmd="denglu"
n=用户名
p=用户密码
登录成功和失败:
-登录成功时候:后端返回以下4个字段,
denglusuccess//空字段,表示登录成功
bs//新的用户标识
id//用户数字id
name//用户登录账号
-登录失败时:后端返回一下2个字段,
denglu
denglufail//表示登录失败,字段数据为失败原因
注册
注册数据传输:
客户端使用json以下三个字段,将数据发送给后端。
cmd="zhuce"
n=用户名
p=用户密码
注册成功和失败:
-注册成功时候:后端返回以下4个字段,
zhucesuccess//空字段,表示注册成功
bs//新的用户标识
id//用户数字id
name//用户登录账号
-注册失败时:后端返回一下2个字段,
zhuce
zhucefail//表示注册失败,字段数据为失败原因
退出登录
客户端发送以下数据到后端即表示退出登录,客户端应在发送退出指令后,应清除本地 bs 标识数据
cmd="out"
群聊下拉获取记录
客户端发送以下字段数据到后端来获取群聊记录,n字段记录群数字 id,p字段记录一个精确到毫秒的时间戳,指令表示获取n群从p时间戳开始往上20条记录,20为默认记录条数。
群聊记录以 qmsg 字段返回字符串数据,数据格式如下:客户端可将数据通过特定分隔符<**>转为数组,即可获得每条记录,再将每条记录通过分隔符<*>转为数组,即可获得每条记录对应字段的数据。
群聊类型<*>群聊时间戳(精确到毫秒)<*>发送人id<*>群id<*>发送人昵称<*>群名称<*>消息内容<**>
聊天类型:
1 代表 图片
2 代表 视频
3 代表 音乐
4 代表 链接
5 代表 文件
6 代表 文本
7 代表 语音
8 代表 加好友
9 代表 红包
10 代表 系统消息
11 代表 位置
12 代表 语音通话
13 代表 视频通话
14 代表 通话结束
15 代表 转账
私聊下拉获取记录
客户端发送以下字段数据到后端来获取私聊记录,n字段记录好友数字 id,p字段记录一个精确到毫秒的时间戳,指令表示获取n好友从p时间戳开始往上20条记录,20为默认记录条数。
私聊记录以 msg 字段返回字符串数据,数据格式如下:客户端可将数据通过特定分隔符<**>转为数组,即可获得每条记录,再将每条记录通过分隔符<*>转为数组,即可获得每条记录对应字段的数据。
私聊类型<*>私聊时间戳(精确到毫秒)<*>发送人id<*>接收人id<*>发送人昵称<*>接收人昵称<*>消息内容<**>
聊天类型:
1 代表 图片
2 代表 视频
3 代表 音乐
4 代表 链接
5 代表 文件
6 代表 文本
7 代表 语音
8 代表 加好友
9 代表 红包
10 代表 系统消息
11 代表 位置
12 代表 语音通话
13 代表 视频通话
14 代表 通话结束
15 代表 转账
群聊标注已读
客户端发送以下字段数据到后端,n记录群id,标注n群的聊天记录全部为已读。
私聊标注已读
客户端发送以下字段数据到后端,n记录好友id,标注和好友n的聊天记录全部为已读。
获取好友列表
客户端发送cmd="h"字段数据到后端,获取所有好友列表。
好友列表以 haoyou 字段返回字符串数据,数据格式如下:客户端可将数据通过特定分隔符>转为数组,即可获取每一个好友数据,再将没哟个好友数据通过 * 分隔符转为数组,即可获取每一个好友的id和昵称。
好友id*好友昵称>
查询朋友圈是否有更新
客户端发送cmd="f"字段数据到后端,查询朋友圈是否有更新。
朋友圈有更新时,后端返回以下字段:i 值为最新发布朋友圈的还有 id ,通过id可获取好友头像等。
查看朋友圈
客户端发送cmd="f2"和num记录页码字段数据到后端,获取对应页面的朋友圈信息。
后端返回以下字段数据:
yema字段记录前端发来的页面数+1,pyq记录朋友圈信息,格式:客户端可将数据通过特定分隔符 <&&> 转为数组,即可获取每条朋友圈信息,再将每条信息通过分隔符 < 转为数组,即可获得每条朋友圈信息对应的字段数据,其中的 0或1 ,当为1时,表示该信息为用户自己发布的,前端应提供删除操作。
好友id<好友昵称<精确到纳秒的时间戳<文字信息<以,分割的图片地址列表<视频地址<音频地址<链接地址<文件地址<以,分割的点赞用户id列表<以>分割的评论列表<0或1<&&>
评论列表格式:客户端可将数据通过分隔符 ' 将评论转为数组,即可获得每条评论信息,再将每条评论通过 > 分隔符 转为数组,即可获取的每条评论对应的字段数据。
时间戳>评论人id>评论人昵称>@的用户id>@的用户昵称>评论内容'
评论朋友圈
客户端通过发送以下字段数据到后端,完成评论朋友圈。
shu字段记录以下key-value:
shu["id"]//记录该朋友圈用户id
shu["pid"]//记录该朋友圈发布的时间戳,精确到纳秒
shu["z"]//只有为1时表示点赞
shu["pl"]//评论内容 可为空
shu["tid"]//记录@的用户id 可为空
评论成功时,后端返回:
fanhui="评论成功!"
mm="pyqgx"
评论失败时,后端返回:
fanhui="数据错误!"
发朋友圈
客户端通过发送以下字段数据到后端,完成发送朋友圈。
cmd="fpyq"
n//记录心情
p//记录链接
shu//记录静态数据 如:图片 shuju[任意名f]=文件base64编码值 shuju[任意名name]=文件名称 shuju[任意名type]=文件类型
发送朋友圈成功,后端返回:mm值为 "pyqgx",客户端可根据具体情况更新朋友圈。
fanhui="发朋友圈成功!"
mm="pyqgx"
如果心情为空,后端返回:
fanhui="心情不能为空!"
删除朋友圈
客户端通过发送以下字段数据到后端,完成删除朋友圈信息:
cmd="scpyq"
n//记录该朋友圈用户id
p//记录该朋友圈发布的时间戳,精确到纳秒
操作成功,后端返回:
fanhui="删除成功!"
mm="pyqgx"
操作失败时,返回:
fanhui="数据错误!"
获取自身数据
客户端通过发送cmd="m"字段数据到后端,获取自身数据:
返回字段数据如下:
me//空字段
name//记录用户登录账号
name2//记录用户昵称
shouji//记录用户手机
email//记录用户email
扫码-获取用户
客户端通过发送以下字段数据到后端,获取用户数据:
cmd="find"
n//记录一个aes加密后的用户登录名称
成功时,返回:
mm="foundhy"
findsuccess//记录搜索用户的登录名
sid//记录搜索用户的id
nicheng//记录搜索用户的昵称
diqu//记录搜索用户的地区信息
xingbie//记录搜索用户的性别信息
qianming//记录搜索用户的签名信息
---
isfriend//该字段出现时,表示该用户是好友
nofriend//该字段出现时,表示该用户不是好友
heimingdan//该字段出现时,表示该用户在黑名单中
失败时,返回:
findfail="该账号不存在"
获取用户信息
客户端通过发送以下字段数据到后端,获取用户数据:
cmd="find"//或者是 cmd="find2"
n//用户id
成功时返回:
mm="foundhy"
findsuccess//记录搜索用户的登录名
sid//记录搜索用户的id
nicheng//记录搜索用户的昵称
diqu//记录搜索用户的地区信息
xingbie//记录搜索用户的性别信息
qianming//记录搜索用户的签名信息
---
isfriend//该字段出现时,表示该用户是好友
nofriend//该字段出现时,表示该用户不是好友
heimingdan//该字段出现时,表示该用户在黑名单中
失败时返回:
findfail="该账号不存在"
添加好友
客户端通过发送以下字段数据到后端:
处理结果以:
fanhui
返回。
成功时,伴随新的好友列表字段:
haoyou
返回。
扫码查找群聊
客户端通过发送以下字段数据到后端:
cmd="findqun"
n//记录一个aes加密后的群id
成功时返回:
mm="foundqun"
qid//记录群id
qaesid//记录群id的aes加密值
qn//记录群名称
qgg//记录群公告
qrs//记录群人数
qcsj//记录群创建时间 年-月-日
失败时返回:
findfail="该群不存在"
加入群聊
客户端通过发送以下字段数据到后端:
cmd="jqun"
n//记录一个aes加密后的群id,用于查找群组
操作结构通过:
fanhui
字段返回。
成功时伴随 qun 字段返回:客户端可通过 > 分隔符将数据转为数组,即可获得每个群数据,再将每个群数据通过分隔符 * 转为数组,即可获得每个群数据的 id 和 群名称
qun//记录所有加入的群列表,格式:群id*群名称(群人数)>
删除好友
客户端通过发送以下字段数据到后端:
成功时返回:客户端可根据 del 字段值来清除对应的缓存
fanhui="删除好友成功!"
mm="del"
del//记录删除了的用户id
以及通过 :
haoyou
字段返回新的好友列表数据。
失败时没有任何返回。
个性设置
客户端通过发送以下字段数据到后端:
cmd="sz"
shu//一个记录map对象的字段
shu字段记录以下key-value:
shu["xingbie"]//记录用户的性别信息 男/女
shu["name"]//记录用户的昵称
shu["qianming"]//记录用户的签名信息
成功时返回:
fanhui="设置成功!"
bs//记录用户的唯一标识
id//记录用户的数字id
name//记录用户的登录名
name2//记录用户的昵称
shouji//记录用户的手机
email//记录用户的email
qianming//记录用户的签名信息
sex//记录用户的性别信息 男/女
失败时返回:
fanhui="名字不能为空"
发送私聊
客户端通过发送以下字段数据到后端:
cmd="send"
shu//一个记录map对象的字段
shu字段记录以下key-value:
shu["lx"]//记录聊天类型
shu["lx2"]//当此字段值为2时,表示发送的是静态文件,如:图片,视频,音频等 ,
shu["name"]//记录文件名 当shu["lx2"]=2时可用
shu["type"]//记录文件类型 当shu["lx2"]=2时可用
shu["rid"]//记录接收方数字id
shu["rname"]//记录接收方的昵称
shu["msg"]//记录消息内容 当shu["lx2"]=2时,此字段为文件base64编码字符串
//如果发送的是位置
shu["long"]//记录用户的经度
shu["lat"]//记录用户的纬度
聊天类型:
1 代表 图片
2 代表 视频
3 代表 音乐
4 代表 链接
5 代表 文件
6 代表 文本
7 代表 语音
8 代表 加好友
9 代表 红包
10 代表 系统消息
11 代表 位置
12 代表 语音通话
13 代表 视频通话
14 代表 通话结束
15 代表 转账
发送失败时,通过
fanhui
字段返回失败原因。
发送成功时会接收到一条私聊信息。
接收私聊
后端通过
msg
字段返回一条私聊数据。数据格式如下:客户端可以将数据通过分隔符 <*> 转为数组,即可获取消息对应字段数据,其中,当聊天类型是静态文件类,如:图片、视频、音频、语音时,消息内容是对应的静态文件地址;是否已读值为:0/1 ,0表示未读 1表示已读
聊天类型<*>时间戳(精确到毫秒)<*>发送人id<*>接收人id<*>发送人昵称<*>接收人昵称<*>消息内容<*>是否已读
发送群聊
客户端通过发送以下字段数据到后端:
cmd="send2"
shu//一个记录map对象的字段
shu字段记录以下key-value:
shu["lx"]//记录聊天类型
shu["lx2"]//当此字段值为2时,表示发送的是静态文件,如:图片,视频,音频等 ,
shu["name"]//记录文件名 当shu["lx2"]=2时可用
shu["type"]//记录文件类型 当shu["lx2"]=2时可用
shu["rid"]//记录群聊数字id
shu["msg"]//记录消息内容 当shu["lx2"]=2时,此字段为文件base64编码字符串
//如果发送的是位置
shu["long"]//记录用户的经度
shu["lat"]//记录用户的纬度
聊天类型:
1 代表 图片
2 代表 视频
3 代表 音乐
4 代表 链接
5 代表 文件
6 代表 文本
7 代表 语音
8 代表 加好友
9 代表 红包
10 代表 系统消息
11 代表 位置
12 代表 语音通话
13 代表 视频通话
14 代表 通话结束
15 代表 转账
发送失败时,通过
字段返回失败原因。
发送成功时会接收到一条群聊信息。
接收群聊
后端通过
字段返回一条群聊数据。数据格式如下:客户端可以将数据通过分隔符 <*> 转为数组,即可获取消息对应字段数据,其中,当聊天类型是静态文件类,如:图片、视频、音频、语音时,消息内容是对应的静态文件地址。
聊天类型<*>群聊时间戳(精确到毫秒)<*>发送人id<*>群id<*>发送人昵称<*>群名称<*>消息内容
语音/视频通话
客户端通过发送以下字段数据到后端,:
语音/视频通话结束
客户端通过发送以下字段数据到后端,:
发红包
扫码转账
客户端通过发送以下字段数据到后端:
cmd="zz2"
p//记录用户的支付密码
num//记录转账金额
shu//一个记录map对象的字段
shu字段记录以下key-value:
shu["rid"]//记录转账接收者的id
shu["rname"]//记录转账接收者的昵称
失败时通过:
fanhui
字段返回错误信息。
支付密码错误时返回:
mm="zzmmcw"//表示支付密码错误
成功时返回:
mm="zzsuccess"//表示转账成功
支付密码设置
客户端通过发送以下字段数据到后端:
cmd="zfsz"
shu//一个记录map对象的字段
shu字段记录以下key-value:
shu["py"]//记录原密码
shu["pn1"]//记录第一遍输入的新密码
shu["pn2"]//记录第二遍输入的新密码
操作结构通过:
fanhui
字段返回。
账单查询
客户端通过发送以下字段数据到后端:
cmd="zd"
后端通过:
zhangdan
字段返回账单数据,数据格式:客户端可将数据根据分隔符 > 转为数组,即可获得每条记录的数据,再将每条数据通过分隔符 * 转为数组,即可获得每条数据对应的字段值。
方式*收支*描述*时间戳*金额*备注*单号*收款人账号*打款人账号*收款人id*打款人id*收款人昵称*打款人昵称>
其中方式值有:转账/扫码/红包。
其中收支值有:收入/指出。
头像上传
客户端通过发送以下字段数据到后端:
cmd="tx"
shu//一个记录map对象的字段
shu字段记录以下key-value:
shu["msg"]//记录头像文件的base64编码字符串
操作结果通过:
fanhui
字段返回。
操作成功时,伴随:
mm="tx"
返回。
好友备注
客户端通过发送以下字段数据到后端:
cmd="bz"
n//记录备注名
s//记录好友数字id
操作结果通过:
fanhui
字段返回。
成功时,伴随 haoyou 字段返回新的好友列表。
好友拉黑
客户端通过发送以下字段数据到后端:
操作结果通过 fanhui 字段返回,成功时伴随 haoyou 字段返回新的好友列表。
好友解黑
客户端通过发送以下字段数据到后端:
操作结果通过 fanhui 字段返回,成功时伴随 haoyou 字段返回新的好友列表。
-绑定手机和短信验证
客户端通过发送以下字段数据到后端,:
-绑定邮箱和邮箱验证
客户端通过发送以下字段数据到后端,:
建立群聊
客户端通过发送以下字段数据到后端:
cmd="jq"
n//记录群名称
p//记录群公告
操作结果通过 fanhui 字段返回,成功时伴随 qun 字段返回新的群列表。
获取群数据
客户端通过发送以下字段数据到后端:
失败时,通过 fanhui 字段返回失败原因。
成功时返回:客户端可将 cy 字段数据通过分隔符 > 转为数组,即可获取每个成员数据,再将每个成员数据通过分隔符 * 转为数组,即可获取每个成员的 id 和昵称。
mm="qxx"
qn//记录群名称
cy//记录群成员列表,格式:昵称*用户数字id>
修改群名称
客户端通过发送以下字段数据到后端:
cmd="qmc"
n//记录群数字id
p//记录群新的名称
操作结果通过 fanhui 字段返回,成功时,伴随 qun 字段返回新的群列表。
修改群公告
客户端通过发送以下字段数据到后端:
cmd="qgg"
n//记录群数字id
p//记录群新的公告内容
操作结果通过 fanhui 字段返回。
修改群备注
客户端通过发送以下字段数据到后端:
cmd="qbz"
n//记录群数字id
p//记录群新的备注
操作结果通过 fanhui 字段返回
修改在群里的昵称
客户端通过发送以下字段数据到后端:
cmd="qnm"
n//记录群数字id
p//记录在群里新的昵称
操作结果通过 fanhui 字段返回,成功时伴随以下字段数据返回:
mm="qxx"
qn//记录群名称
cy//记录群成员列表,格式:昵称*用户数字id>
退出群聊
客户端通过发送以下字段数据到后端:
操作结果通过 fanhui 字段返回,成功时伴随以下字段数据返回:
mm="qtc"
qun//记录新的群列表,格式:群id*群名称(群人数)>
解散群聊
客户端通过发送以下字段数据到后端:
操作结果通过 fanhui 字段返回,成功时伴随以下字段数据返回:
mm="qtc"
qtcid//记录解散的群数字id 可通过此id清除客户端对应的群缓存
qun//记录新的群列表,格式:群id*群名称(群人数)>
拉人进群
客户端通过发送以下字段数据到后端:
cmd="ljq"
n//记录群数字id
p//记录用户数字id集 多个id用英文,分隔
操作结果通过 fanhui 字段返回。
踢出群成员
客户端通过发送以下字段数据到后端:
cmd="qti2"
n//记录群数字id
p//记录用户数字id
操作结果通过 fanhui 字段返回。
添加群聊
客户端通过发送以下字段数据到后端:
操作结果通过 fanhui 字段返回,成功时伴随 qun 字段返回新的群列表数据。
标签:怡宝IM即时通讯接口文档 怡宝IM即时通讯开发文档