VUE项目集成环信webIM随笔

最近做实时通讯,项目需要集成环信IM,网上资料比较少,也是比较头大,捣鼓了两天,实现最基本的图文交流功能,分享一下。


Vue-cli整合环信WebIM

1、npm install easemob-websdk --save

2、npm install strophe.js (这里需要加上.js) 

ps:网上有说这两个插件安装需要特定版本,我这里不需要,直接安装就行。

3、找到node_modules/easemob-websdk/src/connection.js 在16行加入

var Strophe = require('strophe.js').Strophe;

var meStrophe = require('strophe.js');

$iq = meStrophe.$iq;

$build = meStrophe.$build;

$msg = meStrophe.$msg;

$pres = meStrophe.$pres;


在740行 加入

var config = {

    xmppURL: 'im-api.easemob.com',

    apiURL: (location.protocol === 'https:' ? 'https:' : 'http:') + '//a1.easemob.com',

    appkey: '*****************', //去环信自己申请一个appkey就行

    https: false,

    isMultiLoginSessions: true,

    isAutoLogin: true,

    isWindowSDK: false,

    isSandBox: false,

    isDebug: false,

    autoReconnectNumMax: 2,

    autoReconnectInterval: 2,

    isWebRTC: (/Firefox/.test(navigator.userAgent) || /WebKit/.test(navigator.userAgent)) && /^https\:$/.test(window.location.protocol),

    heartBeatWait: 4500,

    isHttpDNS: false,

    msgStatus: true,

   delivery: true,

   read: true,

    saveLocal: false,

    encrypt: {

        type: 'none'

    }

}


在4110行 加入

WebIM.config = config;

4、找到node_modules/strophe.js/dist/strophe.js 在2892行左右加入以下代码

setJid: function (jid) {

    this.jid = jid;

    this.authzid = Strophe.getBareJidFromJid(this.jid);

    this.authcid = Strophe.getNodeFromJid(this.jid);

  },

  getJid: function () {

    return this.jid;

  },


以上配置就完成了。

5、接下来就可以在main中使用了

import websdk from 'easemob-websdk'

let WebIM = window.WebIM = websdk

Vue.prototype.$WebIM = WebIM

var conn = new WebIM.connection({

    isMultiLoginSessions: WebIM.config.isMultiLoginSessions,

    https: typeof WebIM.config.https === 'boolean' ? WebIM.config.https : location.protocol === 'https:',

    url: WebIM.config.xmppURL,

    heartBeatWait: WebIM.config.heartBeatWait,

    autoReconnectNumMax: WebIM.config.autoReconnectNumMax,

    autoReconnectInterval: WebIM.config.autoReconnectInterval,

    apiUrl: WebIM.config.apiURL,

    isAutoLogin: true

});


const options = {

    apiUrl: WebIM.config.apiURL,

    user: '1751501****', //换成自己申请的账号就行,密码也需要换

    pwd: '1751501****',

    appKey: WebIM.config.appkey,

    success:function (re) {

        console.log('登陆成功')

    },

    error:function (err) {

        console.log(err)

    }

}

Vue.prototype.$imconn = conn

Vue.prototype.$imoption = options


6、下面就可以在组件中使用了

6.1

data() {

        return {

            $imconn: {},

            $imoption: {},

        }

    },

6.2

created() {

chatContent: [  ], //显示聊天数据

        this.$imconn = this.$imconn;

        this.$imoption = this.$imoption;

        this.loginWebIM()

    },

6.3

loginWebIM () {

            // 这儿是测试用的账号和密码

            this.$imoption.user = '1751501****';

            this.$imoption.pwd = '1751501****';

            this.$imconn.open(this.$imoption);

            let _this = this;

            this.$imconn.listen({

                onOpened: function (message) {

                    console.log('用户已上线')

                },

                onTextMessage: function ( message ) {

                                _this.chatContent.push({

                                    replyImg: require('../../assets/me/minion.png'),

                                    replyContent: message.data

                                });

                            },//收到文本消息

            })

        },


7、这样用户就已经上线了,接下来可以发送文本数据

//发送文本消息

            handleReply() {

                var id = this.$imconn.getUniqueId();        // 生成本地消息id

                var msg = new WebIM.message('txt', id);

                let _this = this;    // 创建文本消息

                msg.set({

                    msg: this.contentText,                  // 消息内容

                    to: '1526916****',                        // 接收消息对象(用户id)

                    roomType: false,

                    success: function (id, serverMsgId) {

                        _this.chatContent.push({                  //把发送者的头像和文本数据push到数组中在页面上展示

                            askImg: require('../../assets/me/minion.png'),

                            askContent: msg.value,

                        });

                    },

                    fail: function(e){

                        console.log("消息发送失败");

                    }

                });

                msg.body.chatType = 'singleChat';

                this.$imconn.send(msg.body);

                this.contentText = ''

            },

8、在loginWebIM()中加上接口文本消息的监听,上面已经加上了

        onTextMessage: function ( message ) {

                                _this.chatContent.push({

                                    replyImg: require('../../assets/me/minion.png'),

                                    replyContent: message.data

                                });

                            },//收到文本消息

9、到此就可以进行基本的文本交流,自己做的项目,有不完善或者更好的方案的可以跟我交流,后续语音,视频等功能会继续完善…

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容