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 VorbereitungErstellen 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:
|
<<: Kopieren von Feldern zwischen verschiedenen Tabellen in MySQL
>>: Docker installiert und führt den RabbitMQ-Beispielcode aus
Laut dem Datenanalyseunternehmen Net Market Share...
Inhaltsverzeichnis 1. Abschluss 2. Szenarien für ...
1 Problembeschreibung Dieser Artikel sortiert den...
Das Grundprinzip aller Animationen besteht darin,...
Inhaltsverzeichnis 1. Die Rolle der Uhr in Vue is...
Bitte sehen Sie sich den folgenden Screenshot an,...
Inhaltsverzeichnis Hintergrund Erzielen Sie einen...
Verwenden Sie HTML, CSS und JavaScript, um einen ...
Vorwort 1. Dieser Artikel verwendet MySQL 8.0 Ver...
Inhaltsverzeichnis 1. Einführung in den Plattform...
Ein Datenbankindex ist eine Datenstruktur, deren ...
Inhaltsverzeichnis Was ist virtueller Dom? Warum ...
1. Installieren Sie das Linux-System auf der virt...
Vor einigen Tagen habe ich einen Artikel über die...
Laden Sie zuerst das komprimierte Nacos-Paket von...