GO 聊天IM系统(三)整合redis、channel完成单聊私聊以及消息回调

本文介绍如何利用Golang结合Redis和Channel构建聊天IM系统,通过message结构体进行消息分发,利用Redis存储聊天记录,并实现消息回调功能。当用户点击联系人时,前端调用service.RedisMsg获取并展示历史聊天记录。
摘要由CSDN通过智能技术生成

message结构体的定义:

type Message struct {
    gorm.Model
    UserId     int64  //发送者
    TargetId   int64  //接受者
    Type       int    //发送类型  1私聊  2群聊  3心跳
    Media      int    //消息类型  1文字 2表情包 3语音 4图片 /表情包
    Content    string //消息内容
    CreateTime uint64 //创建时间
    ReadTime   uint64 //读取时间
    Pic        string
    Url        string
    Desc       string
    Amount     int //其他数字统计
}

Type字段帮助后端对消息的分发进行判断

func recvProc(node *Node) {
    for {
        _, data, err := node.Conn.ReadMessage()
        if err != nil {
            fmt.Println(err)
            return
        }
        msg := Message{}
        err = json.Unmarshal(data, &msg)
        if err != nil {
            fmt.Println(err)
        }
        //心跳检测 msg.Media == -1 || msg.Type == 3
//心跳消息实现对连接时间的更新࿰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值