1.账号
IM-PC端采用微信号和iVX账号登录的方式,微信和iVX账号不是一个账号,拥有独立的数据;微信账号当做个人账号,iVX账号分个人账号和企业账号,企业账号会有默认的企业群,且不可退出,管理员需要删除群内账号需前往iVX工作台账号管理处删除(下载版本是没有ivx账号登录的,用户可根据逻辑自己接入己方的用户系统)
2.聊天页面
聊天页面左侧导航栏分聊天页面和通讯录,聊天页面包含搜索和聊天,群包含群管理设置等功能,聊天列表可右键操作置顶删除等,,聊天列表删除后需要下次发起聊天才可显示,置顶等功能保留,发送消息被限制(被拉黑或被删除)会有提示。
群设置可以修改基本信息,头像名称是否需要审核等,管理员可以踢出成员,群主可以设置管理员,如果想踢出管理员需要先群主取消管理员身份
首页添加群聊功能可输入需要添加的群ID号,如果不需要审核的群聊加入后可直接聊天,需要审核的则是申请待审核状态,群聊审核在群事项功能中可以审核,只有群主和管理员可以看到和操作入群功能
3.通讯录
通讯录包含好友/群聊/企业成员/好友申请/添加还有功能,操作好友或群聊如图所示,可发起聊天、加入黑名单、删除等操作
好友申请可以看到申请好友的情况,可选择接受或者忽略(等于拒绝)
添加好友需要收入用户的ID,如需查看自己的ID,可鼠标移动到右上角头像处,需要注意的是,并不所有ivx用户都能搜索,只能是登陆过IM的才可以搜索到。
手机端主要功能
手机端在微信浏览器中打开后,可以进行录音并发送语言消息,其余功能与PC端相似。(下载版本是没有ivx账号登录的,用户可根据逻辑自己接入己方的用户系统)
实现方法讲解
主要是运用企业链接作为通信的主要方式,在每次交互的时候通过服务更新数据库,然后通过链接发送全局socket消息,由此达到实时通信的目的,由于功能较多,所以需要处理的数据也会比较多
全局消息大概分为下列几种:
聊天以数据ID为唯一索引,也就是chatId;type区分聊天的类型;members里面是本群包含的人员ID,可用于判断是否在群内;lastContent用于显示最新消息到列表上,聊天的内容分了类型,用于不同的展示方式;feature是群的ID,添加和搜索群聊需要用到此值;extra里的review代表是否需要入群审核,为1时需要审核;config里面的值主要包含聊天是否置顶/隐藏/是否是管理员,以及上一次读取消息的时间(用于控制是否显示聊天上的小红点提示未读消息)
创建聊天的核心在于创建服务和发送socket消息,需要先完成服务再发送全局消息,不然会造成刷新后数据不一致,因为服务是有可能失败的;此处设计的聊天被删除也只是隐藏,不是真正删除,所以需要判断是否是已经存在的聊天用于前端的快速改变,每次都去调用服务拉取最新的列表也可以,只是更消耗性能和不稳定;对于群聊,则还需在打开窗口的动作里面添加获取成员列表、获取公告、获取申请列表等操作,用于展示群聊的信息
发送消息可以点击输入框发送按钮和键盘Enter键,可发送文字图片,移动端可发送语音。
前台下添加enter键的使用,需要判断一下当前所处的位置,判断是聊天页才可以使用
对于聊天列表栏,邮件可弹出操作框,用于置顶和删除功能,置顶和删除的原理都是config里面的一个字段,同时也将用于排序,操作后调用服务更新状态,然后设置前端数据状态,再重新排序,案例里用了一个简单js的sort函数排序,如果不懂的也可以改为对象数组使用工具自带的排序功能进行排序
用户在好友列表拉黑或删除好友后,对方将不能发送消息给该用户,发送消息会收到提示,这些判断都是后台服务中设置好的规则,根据返回的code去控制是否显示这些提示
群聊别移出后则显示移出提示,也将无法发送消息
由于使用的是组应用,后台逻辑都放在了单独应用里面,PC端移动使用的都是微服务,需要后台逻辑的可查看移动端的设计