Vue integriert Tencent TIM Instant Messaging

Vue integriert Tencent TIM Instant Messaging

In diesem Artikel wird hauptsächlich die Integration von Tencent TIM Instant Messaging in Vue vorgestellt und mit Ihnen geteilt. Die Einzelheiten lauten wie folgt:

Über

Vorwort

Das Projekt muss eine Kundendienstfunktion, ein Applet auf der Benutzerseite und ein Webterminal für Kundendienstmitarbeiter haben, sodass Tencents Tim

Vorbereitung

Erstellen Sie eine Anwendung auf der offiziellen Website von Tencent Cloud und erhalten Sie die entsprechende SDKAppID und die entsprechenden Schlüsselinformationen

Installieren des SDK

(1) Befehle zur Verwendung von Webprojekten

// IM Web SDK
npm installiere tim-js-sdk --save
// COS SDK zum Senden von Bildern, Dateien und anderen Nachrichten erforderlich
npm installiere cos-js-sdk-v5 --save

(2) Befehle zur Verwendung von Miniprogrammprojekten

// IM-Applet-SDK
npm installiere tim-wx-sdk --save
// COS SDK zum Senden von Bildern, Dateien und anderen Nachrichten erforderlich
npm installiere cos-wx-sdk-v5 --save

Eingeführt in main.js

importiere TIM von „tim-js-sdk“;
// importiere TIM von „tim-wx-sdk“; // Für die WeChat-Applet-Umgebung heben Sie bitte die Kommentierung dieser Zeile auf und kommentieren Sie „importiere TIM von „tim-js-sdk“;“ aus.
COS aus „cos-js-sdk-v5“ importieren;
// importiere COS von „cos-wx-sdk-v5“; // Für die WeChat-Applet-Umgebung heben Sie bitte die Kommentierung dieser Zeile auf und kommentieren Sie „importiere COS von „cos-js-sdk-v5“;“ aus.

// Eine SDK-Instanz erstellen. Die Methode TIM.create() gibt nur für dieselbe SDKAppID dieselbe Instanz zurück.
  SDKAppID: 0 // Beim Zugriff müssen Sie 0 durch die SDKAppID Ihrer Instant Messaging-Anwendung ersetzen
};
let tim = TIM.create(options); // SDK-Instanzen werden normalerweise durch tim dargestellt // SDK-Protokollausgabeebene festlegen. Detaillierte Ebenen finden Sie in der Beschreibung der setLogLevel-Schnittstelle tim.setLogLevel(0); // Normale Ebene mit einer großen Anzahl von Protokollen, empfohlen für den Zugriff // tim.setLogLevel(1); // Release-Ebene, SDK gibt wichtige Informationen aus, empfohlen für Produktionsumgebungen // Tencent Cloud Object Storage Service SDK (im Folgenden als COS SDK bezeichnet) als Plug-In registrieren. Wenn das IM SDK Nachrichten wie Dateien und Bilder sendet, muss es den COS-Dienst von Tencent Cloud verwenden wx.$app = tim
wx.$app.registerPlugin({'cos-wx-sdk': COS})
wx.store = speichern
wx.TIM = TIM
 wx.dayjs = Tagjs
 dayjs.locale('zh-cn')
lass $bus = neues Vue()
Vue.prototype.TIM = TIM
Vue.prototype.$type = TYPEN
Vue.prototype.$store = speichern
Vue.prototype.$bus = $bus
// Auf Offline-Nachrichten und Benachrichtigungen über den Abschluss der Sitzungslistensynchronisierung warten tim.on(TIM.EVENT.SDK_READY, onReadyStateUpdate, this)
// Benachrichtigung erhalten, dass SDK in den Status „Nicht bereit“ wechselt. SDK kann derzeit nicht normal funktionieren tim.on(TIM.EVENT.SDK_NOT_READY, onReadyStateUpdate, this)
// Kickout-Benachrichtigung erhalten tim.on(TIM.EVENT.KICKED_OUT, kickOut, this)
// Einheitliche Fehlerbehandlung tim.on(TIM.EVENT.ERROR, onError, this)
// Empfangen Sie die gepushte Nachricht, durchlaufen Sie event.data, um die Daten der Nachrichtenliste abzurufen und rendern Sie sie auf der Seite tim.on(TIM.EVENT.MESSAGE_RECEIVED, messageReceived, this)
// Aktualisiere die Konversationsliste tim.on(TIM.EVENT.CONVERSATION_LIST_UPDATED, convListUpdate, this)
// Aktualisieren Sie die Gruppenliste tim.on(TIM.EVENT.GROUP_LIST_UPDATED, groupListUpdate, this)
// Schwarze Liste aktualisieren tim.on(TIM.EVENT.BLACKLIST_UPDATED, blackListUpdate, this)
// Netzwerkstatus ändert sich tim.on(TIM.EVENT.NET_STATE_CHANGE, netStateChange, this)
Funktion onReadyStateUpdate ({ Name }) {
  const isSDKReady = (Name === TIM.EVENT.SDK_READY)
  wenn (isSDKReady) {
  //Benutzerinformationen wx.$app.getMyProfile().then(res => {
      store.commit('updateMyInfo', res.data)
   uni.setStorageSync('name', res.data.nick);
   console.log(Name,'updateMyInfo');
    })
    //Schwarze Liste, gespeichert in vuex wx.$app.getBlacklist().then(res => {
      store.commit('setBlacklist', res.data)
    })
  }
  store.commit('setSdkReady', isSDKReady)
}
// Offline-Kick-Funktion. Sie müssen eine erneute Anmeldung einrichten, nachdem Sie offline geworfen wurden. Funktion kickOut (Ereignis) {
  store.dispatch('Store zurücksetzen')
  wx.showToast({
    Titel: „Sie wurden aus der Leitung geworfen“,
    Symbol: „keine“,
    Dauer: 1500
  })
  setzeTimeout(() => {
    wx.reLaunch({
      URL: „../Konto/Anmelden“
    })
  }, 500)
}
Funktion beiFehler (Ereignis) {
  // Netzwerkfehler, kein Toast-Popup && SDK nicht initialisiert, vollständiger Fehler, wenn (event.data.message && event.data.code && event.data.code !== 2800 && event.data.code !== 2999) {
    store.commit('showToast', {
      Titel: Ereignis.Daten.Nachricht,
      Dauer: 2000
    })
  }
}
//
Funktion checkoutNetState (Status) {
  Schalter (Zustand) {
    Fall TIM.TYPES.NET_STATE_CONNECTED:
      return { Titel: 'Mit dem Netzwerk verbunden', Dauer: 2000 }
    Fall TIM.TYPES.NET_STATE_CONNECTING:
      return { title: 'Das aktuelle Netzwerk ist instabil', Dauer: 2000 }
    Fall TIM.TYPES.NET_STATE_DISCONNECTED:
      return { title: 'Das aktuelle Netzwerk ist nicht verfügbar', Dauer: 2000 }
    Standard:
      zurückkehren ''
  }
}
//Funktion zur Änderung des Netzwerkstatus function netStateChange (event) {
  Konsole.log(Ereignis.Daten.Status)
  store.commit('showToast', checkoutNetState(Ereignis.Daten.Zustand))
}
//Funktion zum Senden und Empfangen von Nachrichten messageReceived (Ereignis) {
Konsole.log(Ereignis,'main.js');
  für (lass i = 0; i < Ereignis.Daten.Länge; i++) {
    let item = Ereignis.Daten[i]
    wenn (Artikel.Typ === TYPES.MSG_GRP_TIP) {
      wenn (Artikel.Nutzlast.Operationstyp) {
        $bus.$emit('GruppennameUpdate', Artikel.Nutzlast)
      }
    }
    wenn (Artikel.Typ === TYPES.MSG_CUSTOM) {
      wenn (isJSON(item.payload.data)) {
        const videoCustom = JSON.parse(item.payload.data)
  console.log(item,'Homepage-Informationen')
        wenn (videoCustom.version === 3) {
          Schalter (videoCustom.action) {
            // Die Gegenstelle ruft mich an Fall 0:
              wenn (!store.getters.isCalling) {
                let url = `call?args=${item.payload.data}&&from=${item.from}&&to=${item.to}&&name=`+uni.getStorageSync('name')+'&&nick='+'';
    Konsole.log(URL,'URL')
                wx.navigateTo({url})
              } anders {
                $bus.$emit('istAnrufend', Artikel)
              }
              brechen
            // Die Gegenpartei storniert Fall 1:
              wx.navigateZurück({
                Delta: 1
              })
              brechen
            // Die Gegenpartei lehnt Fall 2 ab:
              $bus.$emit('beiAblehnung')
              brechen
            // Der andere Teilnehmer antwortet 1 Minute lang nicht
            Fall 3:
              wx.navigateZurück({
                Delta: 1
              })
              brechen
            // Der andere Teilnehmer nimmt den Anruf entgegen Fall 4:
              $bus.$emit('onCall', videoCustom)
              brechen
            // Der Gesprächspartner legt auf Fall 5:
              $bus.$emit('beimSchließen')
              brechen
            // Die Gegenstelle ist am Telefon Fall 6:
              $bus.$emit('beiBesetzt')
              brechen
            Standard:
              brechen
          }
        }
      }
    }
  }
  store.dispatch('beiMessageEvent', Ereignis)
}
Funktion convListUpdate (Ereignis) {
  store.commit('updateAllConversation', event.data)
}

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

Funktion blackListUpdate (Ereignis) {
  store.commit('UpdateBlacklist', Ereignisdaten)
}

Dies ist das Ende dieses Artikels über die Integration von Tencent TIM Instant Messaging in Vue. Weitere relevante Inhalte zu Vue Tencent TIM Instant Messaging finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Benutzerdefinierte Vue-Komponente zur Realisierung der Adressbuchfunktion
  • Entwicklungsbeispiel für die Kommunikation zwischen übergeordneten und untergeordneten Komponenten in Vue.js
  • Kommunikationsmethode für übergeordnete und untergeordnete Komponenten der VueJs-Komponente
  • Beispielcode für die Kommunikation von Vue2.0-Komponentenwerten
  • Sammlung von acht Kommunikationsmethoden für Vue-Komponenten (empfohlen)
  • Kommunikation zwischen übergeordneten und untergeordneten Komponenten in Vue und Verwendung von Sync zum Synchronisieren der Daten übergeordneter und untergeordneter Komponenten

<<:  Kopieren von Feldern zwischen verschiedenen Tabellen in MySQL

>>:  Docker installiert und führt den RabbitMQ-Beispielcode aus

Artikel empfehlen

10 beliebte Windows-Apps, die auch unter Linux verfügbar sind

Laut dem Datenanalyseunternehmen Net Market Share...

Detaillierte Beschreibung des Anwendungsszenarios für Javascript-Closure

Inhaltsverzeichnis 1. Abschluss 2. Szenarien für ...

Zusammenfassung der Vue Watch-Überwachungsmethoden

Inhaltsverzeichnis 1. Die Rolle der Uhr in Vue is...

js realisiert eine schrittweise zunehmende digitale Animation

Inhaltsverzeichnis Hintergrund Erzielen Sie einen...

JS implementiert einen einfachen Zähler

Verwenden Sie HTML, CSS und JavaScript, um einen ...

JDBC-Idee: MySQL importieren, um Java-JAR-Paket zu verbinden (Mac)

Vorwort 1. Dieser Artikel verwendet MySQL 8.0 Ver...

Detaillierte Erklärung des Plattformbusses des Linux-Treibers

Inhaltsverzeichnis 1. Einführung in den Plattform...

Eine kurze Analyse des MySQL-Index

Ein Datenbankindex ist eine Datenstruktur, deren ...

Detaillierte Erklärung zum virtuellen Javascript-DOM

Inhaltsverzeichnis Was ist virtueller Dom? Warum ...

Detailliertes Tutorial zur Springcloud-Alibaba-Nacos-Linux-Konfiguration

Laden Sie zuerst das komprimierte Nacos-Paket von...