IM~~~

聊天工具,功能点梳理:

1 商家,店小二和C通信

   商家,店小二: webIM

   C     user       : 手机客户端

2  支持文字,表情,图片发送和展示

    非图片文件可以暂时不支持(真想传输,可以挂QQ上去聊作为补充)

3  支持订单在webIM上展示

4  消息推送,联系人,好友分组,联系人在线上线推送

5  整合站内信的能力

 

------------------

技术实现

1 图片上传到七牛,返回URL供展示

2 发送订单连接,需要到OC查询订单信息,然后把订单信息包装为DIV进行展示

3 参与交互的组件:浏览器,商家平台,IM

   IM和浏览器之间用websocket,由IM主动推消息给webIM

   webIM获取联系人列表,发消息到商家平台,商家平台将消息发给IM

    Q  为什么消息发送和联系人获取需要经过商家平台,

    A:  IM不做登录,用户必须登录到商家平台,通过商家发消息获取粉丝,公众号之类信息

    Q: IM 为什么不做登录

    A:IM是Go写的,不方便做一套CAS登录

4 Im如何鉴权客户端发送消息的合法信?

     用户登录商家平台,启用IM,商家平台生成token放redis,返回给浏览器

  if (StringUtils.isBlank(redisIM.get(RedisConstant.IM_COOKIE.replace("{hashCode}", userIdMD5)))) {

                      redisIM.set(RedisConstant.IM_COOKIE.replace("{hashCode}", userIdMD5),    String.valueOf(userId));

}

    webIm用这个hashKey跟IM建websocket连接,IM会去redis验证hashKey

 

     -- 这种方案可靠性如何? token的失效,安全,避免恶意攻击是否具备?

 

--------------------

 难点

1 功能

2 性能  在实现功能的时候就必须考虑性能,任何架构的设计都必须有这种考虑,否则性能容易不可控

            连接数目大量增加后,怎么对连接进行管理,负载均衡怎么做

            消息数目过多后,消息历史的管理

    

--------------------------------

独特之处

 1 小二是一个C的身份,是通过邀请得到的,可以在一个IM窗口,维护多个商家,区别于传统电商

 

 

 

 

 

猜你喜欢

转载自curious.iteye.com/blog/2243499
IM