1. 程式人生 > >VUE專案整合環信WebIM即時通訊以及所遇到的問題

VUE專案整合環信WebIM即時通訊以及所遇到的問題

功能背景:

之前和朋友一起做了一個wbe專案整合環信的即時通訊的功能,做的時候感嘆web端文件太少,而且npm包有一些坑,記錄下來寫了這篇部落格,之後不斷有人加我微信問我,怎麼整合.現在我再來重寫一下這篇部落格.

環信web整合功能介紹:

首先:在web端環信是不提供介面的,能拿到的官方的demo也只是用react寫的編譯後的檔案,所以你要自己寫UI

其次:使用聊天功能前的登入,是IM使用者登入,不是用你的環信賬號和密碼

最後:這篇文章是以當前最新版sdk寫的,當前最新版是

"easemob-websdk": "^1.8.3",

正文:

這幾天和朋友做的一個web專案中需要整合環信的即時通訊功能,上網查了很多資料,也試做了一個傳送訊息的demo.感覺用起來真是簡單方便,只需要提供Appkey,賬號和密碼就可以登入環信,而且功能強大,支援傳送表情,圖片,檔案,訊息已讀,以及視訊直播.

    做demo的時候只直接使用<script>標籤引入的sdk,正如環信所說

  整合方式,環信的webSDK整合文件是不包含Vue專案的整合的

我在整合的時候遇到了很多坑

比如找不到Strophe物件 ,再比如使用require方式引入strophe 包Base64未定義,真是頭大.後來功夫不負有心人,終於讓我變查資料,邊摸索,終於解決了所有問題,使用者能夠上線了.

下面說一下我的整合方式

  1. npm i easemob-websdk strophe.js  --save
      安裝 easemob-websdk 和strophe.js 包 我用安裝後是 
     "easemob-websdk": "^1.8.3",
     "strophe.js": "^1.2.16"
    
  2. 修改三個檔案

    /node_modules/strophe.js/strophe.js

    /node_modules/easemob-websdk/src/connection.js

    /webim.config.js




    在connection.js中頭部加入以下幾行程式碼
var Strophe = require('strophe.js').Strophe;
var meStrophe = require('strophe.js');
$iq = meStrophe.$iq;
$build = meStrophe.$build;
$msg = meStrophe.$msg;
$pres = meStrophe.$pres;

如圖

在strophe.js中

   setJid: function (jid) {
      this.jid = jid;
      this.authzid = Strophe.getBareJidFromJid(this.jid);
      this.authcid = Strophe.getNodeFromJid(this.jid);
    },

    getJid: function () {
      return this.jid;
    },
如圖: 在strophe.js的2896行處新增二個方法,即Strophe.Connection.prototype中



在SDK的配置檔案中 webim.config.js中
首行 var WebIM = {}; 替換成 

var WebIM = window.WebIM || {};

尾行新增
window.WebIM = WebIM

3:第三步修改main.js

先引入webim.config.js 再引入sdk為WebIM物件,然後將WebIM物件賦值到Vue的原型上

程式碼如下

require('./assets/lib/easemob-sdk/webim.config.js')
let WebIM = require('easemob-websdk')
Vue.prototype.$webim = WebIM

const 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: '1',
  pwd: 'xiuxiutrip123456',
  appKey: WebIM.config.appkey,
  success:function (re) {
    console.log('連結伺服器正常')
  },
  error:function (err) {
    alert(err)
  }
}
Vue.prototype.$imconn = conn
Vue.prototype.$imoption = options

第四步:在元件中呼叫時

程式碼如下

this.$imoption.user = this.from_username
this.$imoption.pwd = this.currentUserpwd
this.$imconn.open(this.$imoption)
this.$imconn.listen({
    onOpened: function (message) {
         console.log('使用者已上線')
     },
     onClosed: function (message) {
         console.log('使用者已下線')
     },
     onEmojiMessage: this.receiveEmojiMessage,
     onPictureMessage: this.receivePictureMessage,
     onTextMessage: this.receiveTextMsg
})

到此vue專案整合環信webSDK算是吿一段落了

報錯截圖:

報此錯的請修改 /node_modules/easemob-websdk/src/connection.js

報此錯的請修改  /node_modules/strophe.js/strophe.js

報此錯修改  webim.config.js

如果需要demo的話(付費),請加我微信

npm run dev 訪問 http://localhost:8080/#/chat?from_username=2&to_username=1&to_nickname=夢

demo效果圖如下

謝謝

相關推薦

VUE專案整合WebIM即時通訊以及遇到的問題

功能背景: 之前和朋友一起做了一個wbe專案整合環信的即時通訊的功能,做的時候感嘆web端文件太少,而且npm包有一些坑,記錄下來寫了這篇部落格,之後不斷有人加我微信問我,怎麼整合.現在我再來重寫一下這篇部落格. 環信web整合功能介紹: 首先:在web端環信是不提供介

Android- IM即時通訊(1)

********************************環境配置************************ 1.拷貝Demo包下的libs包下的baidumapapi_v2_1_1.jareasemobchat_2.1.3.jarlocSDK_3.3.jararmeabi資料夾 2.配置許可權

Android- IM即時通訊_RESTAPI(2)

*****************************************************REST_API 簡介******************************************************* A)REST client:HTT

angular整合webIM

tin mage comm console ins webim span 圖片 ebs   此處有兩大坑:     1、下載easemob-websdk此npm包時,並沒有下載strophe.js、crypto-js、underscore這三個包,需要自己手動下載。  

Android 使用easeui 3.0 整合即時通訊 我踩過的坑

0、關於註冊賬號就不用說了。 1、建立應用、獲取appkey 0、建立應用 1、填寫資訊 2、獲取appkey 2、整合 0、首先新建一個工程 1、這裡主要介紹使用easeui來整合環信的即時通訊功能,需要下載sdk

整合sdk步驟(即時通訊)

步驟:一,從環信官網註冊獲得appkey(沒有key 無法接入環信伺服器)二, 新增依賴   build.gradle(project)allprojects { repositories { google() jcenter()

Android 網易雲整合(二)即時通訊Demo分析

因為公司需要接網易雲信的實時音視訊部分,下載了網易雲信的即時通訊的Demo,能滿足基本要求。下面是我自己畫的關於網易雲信Demo的一個流程圖,可以更方便快捷的理解,網易雲信demo的跳轉流程,額,其實我主要畫的是快速找到音視訊的跳轉。用xmind畫的有點太長,讓我截成了3張圖

Springboot專案vue專案整合打包

我的環境 * JDK 1.8 * maven 3.6.0 * node環境 1.為什麼需要前後端專案開發時分離,部署時合併? 在一些公司,部署實施人員的技術無法和網際網路公司的運維團隊相比,由於各種不定的環境也無法做到自動構建,容器化部署等。因此在這種情況下儘量減少部署時的服務軟體需求,打出的包數量也儘量

ios-swift-整合遇到的坑

第一個 整合 EaseUI 時 EaseUI.h 檔案的 #import “UIImageView+WebCache.h” 會一直報錯,只要改成 #import<SDWebImage/UIImageView+WebCache.h> 再build就可以了,環信不用

android整合sdk出現app:transformClassesWithDexForDebug.” ---finished with non-zero exit value 2解決方法

android整合環信sdk出現app:transformClassesWithDexForDebug.” —finished with non-zero exit value 2解決方法 通常是架包衝突問題。 首先找到Gradle Scripts 然後找到 解決: impleme

vue專案之微分享

1. npm install weixin-js-sdk --save  2. mian.js 引入 import wx from 'weixin-js-sdk' Vue.prototype.wx = wx 3.wxapi.js 封裝的公共js import

vue 專案中 如何動態監聽瀏覽器以及iOS手機微自帶的返回按鈕的事件

vue搭建的頁面中,左上角的返回按鈕,我自己定義了返回的了路徑,可是當執行時,就會發現,蘋果手機的下方會有自帶的返回按鈕(安卓手機沒有),那麼這個按鈕的返回事件該如何設定呢? 一般情況下,微信自帶的返回按鈕都是返回上一個路徑,可是當我的頁面時使用者掃碼進入的,沒有上一條路徑

vue專案接入微JSSDK的坑

date: 2018-12-13 15:23:09 用於記錄接入微信JS-SDK的坑,以後方便查詢 第一次接入公眾號微信支付、分享、定位等等的坑的時候,心裡是迷茫而又恐懼。因為,聽說坑特別多,後來發現自己的親身體驗到了這一點。 支付的坑 1、當前URL未註冊 問題: 微信公

vue專案使用微公眾號支付總結

微信公眾號支付 1. 使用jssdk呼叫微信支付,具體檢視開發文件; 使用的vuex,在mutations中 wechatPay (state, data) { state.payObject = data console.log('微信支付開始請求')

最新安卓整合SDK3.5.1步驟詳解大白菜版本,記錄下

最近兩天一直在查詢整合環信SDK的部落格與文章,找來找去,最新的整合過程詳解也是環信官方SDK更新前的,大部分都是SDK3.4.1之前的,剛才測試環信SDK3.5.1測試成功後就來寫篇文章記錄下,在這裡先感謝下這位大神的部落格,附上連線,我是按照他寫的部落格一步一步測試成功的

最簡單的Vue專案整合UEditor方式,目前沒有之一

前言 上圖是UEditor的 百度指數 折線圖。雖然今天已經是 2018 年,且優秀的富文字編輯器層出不窮(包括移動端),但從圖中可以看出UEditor仍然維持著較高的搜尋熱度。而不少公司和個人也仍然在專案中使用UEditor。目前,UEditor官網

接入網易雲IM即時通訊的微小程式聊天室

 出售微信小程式聊天室完整原始碼,也可定製開發微信小程式。掃碼加微信詳聊 微信小程式開發交流qq群   173683895  、 526474645 ; 接入流程: 初次接觸網易雲通訊IM服務,您可以通過以下產品介紹文件瞭解我們的產品

android studio如何快速整合EaseUI

最近專案中要使用即時通訊,為什麼會選環信呢,這是因為之前負責這一塊的那位兄弟跟老闆說這是免費的,老闆一聽免費的,好,就它了,後來這位兄弟跑路了,就讓我來接手了.....,無力吐槽,廢話不多說,我們開始吧。 下面我就來分享一下我在整合環信EaseUi中遇到的問題。 ps

Netty 入門與實戰:仿寫微 IM 即時通訊系統

作為一個學 Java 的,如果沒有研究過 Netty,那麼你對 Java 語言的使用和理解僅僅停

android如何整合的聊天介面和訊息列表

使用拓展訊息實現聊天介面和訊息列表的頭像和暱稱的展示 上篇文章只是簡單的介紹怎麼整合環信,但是在自己的專案中涉及到聊天這一塊。在做android開發的時候,往往要考慮到怎麼展示使用者暱稱和頭像的問題。說明一點:我們這個專案的使用者頭像和暱稱是我們後臺返回給我們的。我們只需要