web 版im即时通讯旧版本

37 篇文章 0 订阅

vue 页面

1.引用webim.js

我在app.vue中全局引用

import './api/webim.js'

2. 登录im , 方法在created中运行。 接口返回对象, webim.login 初始化im

methods:{
    imLogin:function(uuid){
      var vm=this;
      //注册监听事件
      var listeners = {
          "onConnNotify": vm.onConnNotify, //监听连接状态回调变化事件,必填
          "onMsgNotify": vm.onMsgNotify, //监听新消息(私聊,普通群(非直播聊天室)消息,全员推送消息)事件,必填
          "onKickedEventCall": vm.onKickedEventCall //被其他登录实例踢下线
      };

      //初始化时,其他对象,选填
      var options = {
          'isAccessFormalEnv': true, //是否访问正式环境,默认访问正式,选填
          'isLogOn': false //是否开启控制台打印日志,默认开启,选填
      };

      port.imSing.r({identifier: uuid}).then(loginInfo=>{
          vm.loginInfo=loginInfo.data;
          window.webim.login(
            loginInfo.data, listeners, options,
            function (resp) {
              if (resp.ErrorCode === 0 && resp.ActionStatus === "OK") {
                  // vm.loginInfo.identifierNick = resp.identifierNick;//设置当前用户昵称
                  // vm.loginInfo.headurl = resp.headurl;//设置当前用户头像
                  console.log("登录成功  resp = " + JSON.stringify(resp));
                  
              }
            }, function (err) {
                console.log(err.ErrorInfo);
            }
          );
      });
        
    },
},
created(){
    this.imLogin(uuid);
}

3.listeners 中调用的函数  写在methods中

methods:{
    //监听连接状态回调变化事件
    onConnNotify : function (resp) {
        console.log(resp)
          var info;
          switch (resp.ErrorCode) {
              case window.webim.CONNECTION_STATUS.ON:
                  console.log('建立连接成功: ' + resp.ErrorInfo);
                  break;
              case window.webim.CONNECTION_STATUS.OFF:
                  info = '连接已断开,无法收到新消息,请检查下你的网络是否正常: ' + resp.ErrorInfo;
                  console.log(info);
                  break;
              case window.webim.CONNECTION_STATUS.RECONNECT:
                  info = '连接状态恢复正常: ' + resp.ErrorInfo;
                  console.log(info);
                  break;
              default:
                  console.log('未知连接状态: =' + resp.ErrorInfo);
                  break;
          }
    },
    //被新实例踢下线的回调处理
    onKickedEventCall() {
        this.$toast("其他地方登录,被T了");
    },

    //newMsgList 为新消息数组,结构为[Msg]
    onMsgNotify:function(newMsgList) {
      console.log("MSG") ;
      // console.log(newMsgList) ;
      for (var i in newMsgList) {//遍历新消息
          if(newMsgList[i].elems[0].content.text=="__end__"){
              this.$toast('已结束');
              //清除session
              util.session('getList','');
              util.session('doctorInfos','');

              setTimeout(function(){
                this.$router.push({path:'/'})
              },3000)
              return;
          }
          
          var cont = newMsgList[i].elems[0].content.text
         
          this.dataList.push({
              content:cont,
              sendTime:util.CurentTime(),
         

          });
          console.log(this.dataList)
      
          this.$nextTick(() => {
            this.$refs.pageCont.scrollTop = this.$refs.pageCont.scrollHeight
          })
      }

    }

}

此时im已经调通 。

4. 发送数据(1)通过接口发送到后台(2)发送到im

//发送内容
    sendContent(content,callback){
      let vm = this;
      vm.talkValue = null;
      if(content == null && vm.seedimg==null){
        vm.$toast('空的内容不能发送');
      }else{
        var params=JSON.stringify({
              communicationId: vm.getList.comunicationId,  //通讯标识
              content:content,
              imgs:vm.seedimg
        })
        port.seedTalk.r(params).then(rs=>{
          if(rs.data.code == 1){
            vm.dataList.push({
                    content:content?content:vm.seedimg,
                    sendTime:util.CurentTime(),
                    talkImg:vm.seedimg?true:false
                });
            
                vm.$nextTick(() => {
                  vm.$refs.pageCont.scrollTop = vm.$refs.pageCont.scrollHeight
                })
                vm.sentToIm(content?content:vm.seedimg);//发送im
                callback && callback();
          }else{
            vm.$toast('发送失败') ;
          }
        })
      }

    sentToIm(content){
      var vm = this;
      var selSess = null;
      if(!this.selSess){
              this.selSess = new window.webim.Session(window.webim.SESSION_TYPE.C2C, this.doctorInfos.uuid,this.doctorInfos.uuid, '', Math.round(new Date().getTime() / 1000));
          }
          selSess=this.selSess;
          var isSend = true;//是否为自己发送
          var seq = -1;//消息序列,-1表示 SDK 自动生成,用于去重
          var random = Math.round(Math.random() * 4294967296);//消息随机数,用于去重
          var msgTime = Math.round(new Date().getTime() / 1000);//消息时间戳
          var subType=window.webim.C2C_MSG_SUB_TYPE.COMMON;//消息子类型
          var msg = new window.webim.Msg(selSess, isSend, seq, random, msgTime, this.loginInfo.identifier, subType, this.loginInfo.identifierNick);
          var text_obj = new window.webim.Msg.Elem.Text(content);
          msg.addText(text_obj);
          msg.addText(new window.webim.Msg.Elem.Text(vm.getList.comunicationId));//消息ID
          window.webim.sendMsg(msg,function(){
            console.log("IM  发送成功") ;
            // console.log(msg) ;
          },function(e){
            console.log("IM 发送失败") ;
            // console.log(msg) ;
            console.log(e) ;
          });
      
    }   

此写法是 旧版本 im   

在此版本webim下载地址 :https://download.csdn.net/download/p930318/12022155

WebIM说明 WebIM是一款基于jQuery的一款web即时通讯插件,姑且这么称呼吧。插件最大程度实现了IM的常用功能,除即时通讯的常用功能外,还加入了:消息盒子、窗口抖动、添加删除好友、最近联系人、超时登录界面、网站小秘书、聊天记录、发送频率限制、发送产品、发送名片、发送表情、产品分享、黑名单、举报、收藏、公告、智能网址过滤、消息提醒、修改资料、名片二维码、禁止粘贴、收起联系人列表、推荐好友等30余项改进。全浏览器兼容。 插件调用简单方便,只需在现有的web系统中加入几行代码,理论上可嵌入任何web系统。 2012年项目,已不再维护。 配置 $(function() { $(document).FnWebIM({ autoLogin :true, //boolean型,默认是否自动登录,true:自动登录,false:手动登录,默认为true msgRefreshTime :1000, //number型,消息刷新时间,单位为ms friendRefreshTime :10000, //number型,好友刷新时间,单位为ms showSecretary :true, //boolean型,默认是否显示小秘书,true:显示,false:不显示,默认为true noticeContent :"唐僧师徒历经千辛万苦,终于见到了佛祖……", //string型,公告内容 为空时不显示公告 sendPicture :true, //boolean型,是否允许发送图片,true:允许,false:不允许,默认为true msgMaxSize :300, //number型,单条消息最大允许字符 msgSound :false, //boolean型,是否开启声音提醒,true:开启,false:关闭,默认为true defaultWindow :"" //string型,登录后打开新聊天窗口,此处接收的参数为联系人的uid,否则会出错 }); }); 详细说明文档 http://www.zi-han.net/case/im/help.html 示例 http://www.zi-han.net/developer/721.html 注意 请在服务器(如localhost)环境下打开
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值