IM系统设计

即时通讯(Instant Messaging,简称IM)是一个实时通信系统,允许两人或多人使用网络实时的传递文字消息、文件、语音与视频交流。实现方式有两种。第一种基于Server转发的,Client双方通信会经过Server转发来完成消息传递。例如QQ、微信。

第二种是基于P2P(点对点)的。P2P的实现依赖于客户端之间的互联,但由于NAT与防火墙的存在,客户端无法直接互联,需要coturn服务器用来穿越NAT网络。

本文主要讲述基于Server转发实现的即时通讯原理和实现过程,包括私聊和群聊两类。私聊和群聊,原理基本类似,但私聊是单次转发,群聊属于遍历转发。不同点为,群聊以群ID(多人)划分,私聊以会话ID(两人)划分,其次消息存储上也有较大差异。

总体设计

实现方式

  1. 协议:WebSocket
  2. 框架:Socket IO/Swoole
  3. 关键点:可扩展,支持分布式部署。短链接负责业务逻辑,长链接负责Websocket。

总体架构图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值