最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue實現(xiàn)集成騰訊TIM即時通訊

 更新時間:2021年06月21日 08:37:04   作者:nxmin  
最近在做商城類的項目,需要使用到客服系統(tǒng),用戶選擇的騰訊IM即時通信,所以本文主要介紹了vue實現(xiàn)集成騰訊TIM即時通訊,感興趣的可以了解一下

本文主要介紹了vue實現(xiàn)集成騰訊TIM即時通訊,分享給大家,具體如下:

上圖

前言

項目需要做個客服功能,用戶端小程序,客服人員web端,于是用到了騰訊的tim

準(zhǔn)備工作

在騰訊云官網(wǎng)上創(chuàng)建應(yīng)用,獲取到相應(yīng)的SDKAppID和相應(yīng)的秘鑰信息

安裝SDK

(1) web項目使用命令

// IM Web SDK
npm install tim-js-sdk --save
// 發(fā)送圖片、文件等消息需要的 COS SDK
npm install cos-js-sdk-v5 --save

(2) 小程序項目使用命令

// IM 小程序 SDK
npm install tim-wx-sdk --save
// 發(fā)送圖片、文件等消息需要的 COS SDK
npm install cos-wx-sdk-v5 --save

main.js中引入

import TIM from 'tim-js-sdk';
// import TIM from 'tim-wx-sdk'; // 微信小程序環(huán)境請取消本行注釋,并注釋掉 import TIM from 'tim-js-sdk';
import COS from 'cos-js-sdk-v5';
// import COS from 'cos-wx-sdk-v5'; // 微信小程序環(huán)境請取消本行注釋,并注釋掉 import COS from 'cos-js-sdk-v5';

// 創(chuàng)建 SDK 實例,TIM.create() 方法對于同一個 SDKAppID 只會返回同一份實例
let options = {
  SDKAppID: 0 // 接入時需要將0替換為您的即時通信應(yīng)用的 SDKAppID
};
let tim = TIM.create(options); // SDK 實例通常用 tim 表示
// 設(shè)置 SDK 日志輸出級別,詳細(xì)分級請參見 setLogLevel 接口的說明
tim.setLogLevel(0); // 普通級別,日志量較多,接入時建議使用
// tim.setLogLevel(1); // release級別,SDK 輸出關(guān)鍵信息,生產(chǎn)環(huán)境時建議使用

// 將騰訊云對象存儲服務(wù) SDK (以下簡稱 COS SDK)注冊為插件,IM SDK 發(fā)送文件、圖片等消息時,需要用到騰訊云的 COS 服務(wù)
wx.$app = tim
wx.$app.registerPlugin({'cos-wx-sdk': COS})
wx.store = store
wx.TIM = TIM
 wx.dayjs = dayjs
 dayjs.locale('zh-cn')
let $bus = new Vue()
Vue.prototype.TIM = TIM
Vue.prototype.$type = TYPES
Vue.prototype.$store = store
Vue.prototype.$bus = $bus
// 監(jiān)聽事件 收到離線消息和會話列表同步完畢通知
tim.on(TIM.EVENT.SDK_READY, onReadyStateUpdate, this)
// 收到SDK進(jìn)入not ready狀態(tài)通知,此時SDK無法正常工作
tim.on(TIM.EVENT.SDK_NOT_READY, onReadyStateUpdate, this)
// 收到被踢下線通知
tim.on(TIM.EVENT.KICKED_OUT, kickOut, this)
// 出錯統(tǒng)一處理
tim.on(TIM.EVENT.ERROR, onError, this)
// 收到推送的消息,遍歷event.data獲取消息列表數(shù)據(jù)并渲染到頁面
tim.on(TIM.EVENT.MESSAGE_RECEIVED, messageReceived, this)
// 更新會話列表
tim.on(TIM.EVENT.CONVERSATION_LIST_UPDATED, convListUpdate, this)
// 更新群組列表
tim.on(TIM.EVENT.GROUP_LIST_UPDATED, groupListUpdate, this)
// 更新黑名單
tim.on(TIM.EVENT.BLACKLIST_UPDATED, blackListUpdate, this)
// 網(wǎng)絡(luò)狀態(tài)變化
tim.on(TIM.EVENT.NET_STATE_CHANGE, netStateChange, this)
function onReadyStateUpdate ({ name }) {
  const isSDKReady = (name === TIM.EVENT.SDK_READY)
  if (isSDKReady) {
  //用戶信息
    wx.$app.getMyProfile().then(res => {
      store.commit('updateMyInfo', res.data)
   uni.setStorageSync('name', res.data.nick);
   console.log(name,'updateMyInfo');
    })
    //黑名單列表,存入vuex中
    wx.$app.getBlacklist().then(res => {
      store.commit('setBlacklist', res.data)
    })
  }
  store.commit('setSdkReady', isSDKReady)
}
//被踢下線函數(shù),被踢下線之后需要設(shè)置重新登錄
function kickOut (event) {
  store.dispatch('resetStore')
  wx.showToast({
    title: '你已被踢下線',
    icon: 'none',
    duration: 1500
  })
  setTimeout(() => {
    wx.reLaunch({
      url: '../account/login'
    })
  }, 500)
}
function onError (event) {
  // 網(wǎng)絡(luò)錯誤不彈toast && sdk未初始化完全報錯
  if (event.data.message && event.data.code && event.data.code !== 2800 && event.data.code !== 2999) {
    store.commit('showToast', {
      title: event.data.message,
      duration: 2000
    })
  }
}
//
function checkoutNetState (state) {
  switch (state) {
    case TIM.TYPES.NET_STATE_CONNECTED:
      return { title: '已接入網(wǎng)絡(luò)', duration: 2000 }
    case TIM.TYPES.NET_STATE_CONNECTING:
      return { title: '當(dāng)前網(wǎng)絡(luò)不穩(wěn)定', duration: 2000 }
    case TIM.TYPES.NET_STATE_DISCONNECTED:
      return { title: '當(dāng)前網(wǎng)絡(luò)不可用', duration: 2000 }
    default:
      return ''
  }
}
//網(wǎng)絡(luò)狀態(tài)變化函數(shù)
function netStateChange (event) {
  console.log(event.data.state)
  store.commit('showToast', checkoutNetState(event.data.state))
}
//消息收發(fā)
function messageReceived (event) {
console.log(event,'main.js');
  for (let i = 0; i < event.data.length; i++) {
    let item = event.data[i]
    if (item.type === TYPES.MSG_GRP_TIP) {
      if (item.payload.operationType) {
        $bus.$emit('groupNameUpdate', item.payload)
      }
    }
    if (item.type === TYPES.MSG_CUSTOM) {
      if (isJSON(item.payload.data)) {
        const videoCustom = JSON.parse(item.payload.data)
  console.log(item,'首頁信息')
        if (videoCustom.version === 3) {
          switch (videoCustom.action) {
            // 對方呼叫我
            case 0:
              if (!store.getters.isCalling) {
                let url = `call?args=${item.payload.data}&&from=${item.from}&&to=${item.to}&&name=`+uni.getStorageSync('name')+'&&nick='+'';
    console.log(url,'url')
                wx.navigateTo({url})
              } else {
                $bus.$emit('isCalling', item)
              }
              break
            // 對方取消
            case 1:
              wx.navigateBack({
                delta: 1
              })
              break
            // 對方拒絕
            case 2:
              $bus.$emit('onRefuse')
              break
            // 對方不接1min
            case 3:
              wx.navigateBack({
                delta: 1
              })
              break
            // 對方接聽
            case 4:
              $bus.$emit('onCall', videoCustom)
              break
            // 對方掛斷
            case 5:
              $bus.$emit('onClose')
              break
            // 對方正在通話中
            case 6:
              $bus.$emit('onBusy')
              break
            default:
              break
          }
        }
      }
    }
  }
  store.dispatch('onMessageEvent', event)
}
function convListUpdate (event) {
  store.commit('updateAllConversation', event.data)
}

function groupListUpdate (event) {
  store.commit('updateGroupList', event.data)
}

function blackListUpdate (event) {
  store.commit('updateBlacklist', event.data)
}

到此這篇關(guān)于vue實現(xiàn)集成騰訊TIM即時通訊的文章就介紹到這了,更多相關(guān)vue騰訊TIM即時通訊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue中使用$http.post請求傳參的錯誤及解決

    vue中使用$http.post請求傳參的錯誤及解決

    這篇文章主要介紹了vue中使用$http.post請求傳參的錯誤及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue.js實現(xiàn)大屏數(shù)字滾動翻轉(zhuǎn)效果

    Vue.js實現(xiàn)大屏數(shù)字滾動翻轉(zhuǎn)效果

    大屏數(shù)字滾動翻轉(zhuǎn)效果來源于最近工作中element后臺管理頁面一張大屏的UI圖,該UI圖上有一個模塊需要有數(shù)字往上翻動的效果。本文通過截圖代碼的形式給大家介紹Vue.js實現(xiàn)大屏數(shù)字滾動翻轉(zhuǎn)效果,感興趣的朋友一起看看吧
    2019-11-11
  • vue中的按鈕綁定事件小案例

    vue中的按鈕綁定事件小案例

    這篇文章主要介紹了vue中的按鈕綁定事件小案例,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 詳解Vue-cli 創(chuàng)建的項目如何跨域請求

    詳解Vue-cli 創(chuàng)建的項目如何跨域請求

    本篇文章主要介紹了詳解Vue-cli 創(chuàng)建的項目如何跨域請求 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • 在vue中獲取token,并將token寫進(jìn)header的方法

    在vue中獲取token,并將token寫進(jìn)header的方法

    今天小編就為大家分享一篇在vue中獲取token,并將token寫進(jìn)header的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue使用canvas繪制圓環(huán)

    vue使用canvas繪制圓環(huán)

    這篇文章主要介紹了vue使用canvas繪制圓環(huán),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 詳解如何搭建mpvue框架搭配vant組件庫的小程序項目

    詳解如何搭建mpvue框架搭配vant組件庫的小程序項目

    這篇文章主要介紹了詳解如何搭建mpvue框架搭配vant組件庫的小程序項目,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • Vue中sync修飾符分析原理及用法示例

    Vue中sync修飾符分析原理及用法示例

    在vue中,子組件如果想修改父組件的變量,一般做法是通過綁定事件的方法,父組件向子組件傳遞修改變量的方法,子組件觸發(fā)修改變量的方法執(zhí)行,這種方式中規(guī)中矩;另一種方法是使用sync修飾符,此方法可以減少很多代碼量
    2022-08-08
  • vuex中store.commit和store.dispatch的區(qū)別及使用方法

    vuex中store.commit和store.dispatch的區(qū)別及使用方法

    這篇文章主要介紹了vuex中store.commit和store.dispatch的區(qū)別及使用方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Vue.js實現(xiàn)輸入框清空功能的兩種方式

    Vue.js實現(xiàn)輸入框清空功能的兩種方式

    Vue.js 是一個流行的前端框架,它提供了多種方法來實現(xiàn)數(shù)據(jù)的雙向綁定和事件處理,在構(gòu)建表單時,我們經(jīng)常需要實現(xiàn)清空輸入框的功能,本文將介紹兩種在Vue中實現(xiàn)輸入框清空功能的方法,感興趣的小伙伴跟著小編一起來看看吧
    2024-12-12

最新評論

霍林郭勒市| 台东县| 突泉县| 台湾省| 江永县| 页游| 宜都市| 和硕县| 大余县| 崇左市| 仪陇县| 峨山| 南漳县| 三穗县| 奉贤区| 正定县| 杭州市| 调兵山市| 开阳县| 永城市| 资溪县| 兖州市| 莒南县| 客服| 鹤庆县| 双牌县| 鹤岗市| 印江| 天镇县| 琼海市| 隆化县| 崇左市| 大兴区| 东平县| 从江县| 抚州市| 蒙山县| 新乐市| 绍兴县| 册亨县| 元江|