// @消息格式
{
"extra": "", -- 扩展字段
"members": [{ -- @成员
"name": "李小四", -- 人员名称
"id": 111873 -- 人员userId
}],
"message": "@李小四" -- 消息内容
}
其中extra是我发送方的Id,members是我@的成员的数组,每@一个成员就是一个字典,message是我的文本内容
就是当我两个用户同时在线通讯的时候,如果某一个人@了我,会socket ack解析并发送一个通知,将我的信息发送过去同时并刷新界面,这个通知是一对多的关系,因为涉及到刷新最近会话信息的内容,但是我把最近会话信息的通知传过来的对象的改变了,因为通知传值其实访问的是同一个堆的内容,当我改变堆里面的原始值的时候,伴随着我的通知的内容也发生变化,因此导致我的聊天界面解析错误,出现一个空文本,后面的策略就是所有的信息都是在根据type类型在显示界面去判断做处理,这样不会导致数据在传输过程中,中途被修改掉,导致数据发生错误。
最后说到了type类型,一般我们使用的是枚举,在项目中属性传值虽然不是主流,但是有的时候也是经常用到的,譬如说:当我从不同的源头push到相同界面的时候会判断让显示的内容不一致,这个时候我一般会在创建并push的时候会穿一个bool值给下一个界面,根据bool值来显示不同界面我应该执行的操作,其实bool值或者int值这样直接写是有点low的,其实我完全可以使用枚举去代替,并且使用定义语义,这样看起来不仅通俗易懂而且逼格立马也升了一个台阶...