首页 电脑 电脑学堂 查看内容

一个简单的聊天或者私信系统设计

2016-6-20 10:51 2071 0

摘要: 不少网站都会内置聊天或者私信系统, 为了方便更多人, 现将一个最简单的聊天系统的接口设计放在这里, 这是一个基于 HTTP 的聊天系统设计.首先是视图设计:# view: msg/unread (全局)未读消息列表 chat 一对一聊天窗 ...

不少网站都会内置聊天或者私信系统, 为了方便更多人, 现将一个最简单的聊天系统的接口设计放在这里, 这是一个基于 HTTP 的聊天系统设计.

首先是视图设计:

# view:

msg/unread
  (全局)未读消息列表
chat
  一对一聊天窗口
chat/history
  我的聊天记录(按人组织)列表

接着是数据接口设计:

# ajax:

msg/unread/get
  获取(全局)未读消息列表
  @last_msg_id: 获取比此消息更晚的未读消息, 不包含该条消息.
chat/get
  获取一对一聊天记录
  @user_id: (msg_id, user_id 必须传一个)聊天者
  @msg_id: (msg_id, user_id 必须传一个)根据此消息, 可得到聊天者, 并可在显示聊天记录时定位到对应的消息
chat/get_unread
  @user_id: 聊天者
  @last_msg_id: 获取比此消息更晚的未读消息, 不包含该条消息.
chat/send
  发送消息
chat/history/get
  我的聊天记录(按人组织)列表

其中, 带有 last_msg_id 参数的接口, 可用于轮询获取新消息, 以便在缺少推送机制(PUSH)时提供一种替代方案. 大多数情况下, 10秒一次的刷新频率能达到"实时聊天"的效果.

当有推送机制时, 如采用iComet, 推送机制只推送通知(notify), 实际的消息内容仍然通过带 last_msg_id 的接口获取. 也就是说, 把固定刷新频率, 改为受通知时刷新(PUSH + PULL 结合).

另外, 消息的持久化可以使用 MySQL 数据库, 但更推荐 SSDB NoSQL 数据库, 可以 SSDB 能存储超过十亿条的聊天历史记录并能快速查询.

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手
1

鲜花

鸡蛋

刚表态过的朋友 (1 人)

  • 鲜花

    匿名

最新评论

返回顶部