IM即时通讯-从0到1的实践(一)

先立个小目标:实现单聊

何为单聊呢:两个人之间的聊天,相对群聊而言

麻雀虽小五脏俱全,虽然说单聊是个小目标,但也在纵向上实现了IM即时通讯,也就是说包含了IM即时通讯必要的知识点。

需求细化:

1. 对方在线:发送消息到服务端,服务端再推送消息给对方;

2. 对方离线:发送消息到服务端,服务端将消息存储到离线消息,对方上线后,再拉取离线消息。

这也就是单聊的实现过程,至于更加细化的,比如消息体的设计、消息id、未读消息的处理等,这些后续的文章中都会实现。

虽说是个demo,但也少不了设计的环节,简单的架构设计如下:

这里分为四层架构

客户端:主要是手机端

gateway:简单地设计了一层网关过滤层,目前只有jwt过滤

service端:分为两部分,一部分为聊天的websocket协,另一部分为业务的http协议

数据库:redis,存储用户好友;MongoDB,存储用户信息、离线消息等

技术选型:

前端:vue、mui、jquery

后端:golang、gin

数据库:redis、mongodb

选型说明:

vue+mui的组合,可以快速开发手机端的页面,基本上不用写css样式代码;

golang的gin框架,一个轻量级的框架,这就不多说了,简洁而优雅,妥妥的明星级别;

redis+mongodb,redis用于存储用户好友,主要用到了redis的Set,很方便地获取到两个人的共同好友,可以扩展好友推荐的功能;这里选择mongodb而不是mysql,主要是为了练手,毕竟mysql大家都用的多了。

IM即时通讯从0到1的实践,相关文章:

IM即时通讯-从0到1的实践(一)<本文>

IM即时通讯-项目框架搭建(二)

IM即时通讯-用户注册登录,及gin+JWT鉴权(三)

IM即时通讯-核心结构体设计(四)

IM即时通讯-消息id(五)

IM即时通讯-会话列表和会话信箱(六)

IM即时通讯-1.0版成果展示与后续扩展(七)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值