VorwortIn diesem Artikel wird hauptsächlich WebSocket zum Herstellen einer langen Verbindung verwendet, die globalen Kommunikationseigenschaften von Vuex sowie die Überwachungs- und Berechnungsfunktionen zum Überwachen von Nachrichtenänderungen und zum Steuern von Seitenänderungen, um einen Echtzeit-Chat zu erreichen. 1. Der Effekt ist wie in der Abbildung dargestellt2. Konkrete Umsetzungsschritte1. Einführung in VuexDer Code lautet wie folgt (Beispiel): //Vuex installieren npm installiere vuex //In main.js „import store from './store'“ einführen neuer Vue({ el: '#app', Router, speichern, rendern: h => h(App) }) Ich habe eine einfache Kapselung von Vuex vorgenommen, wie in der folgenden Abbildung dargestellt. Sie können nach Ihren eigenen Gewohnheiten vorgehen. 2.Webscoked-ImplementierungDie Webscoked-Implementierung ist im Wesentlichen in die folgenden Teile unterteilt: Herstellen einer Verbindung Senden von Heartbeat-Paketen Nach Ausfall oder Fehler erneut verbinden konstanter Zustand = { URL: '', webSocket: null, lockReconnect: false, Nachrichtenliste: [], msgItem: {}, PingInterval: null, timeOut: null, } const Mutationen = { [Typen.INIT_WEBSOCKET](Status, Daten) { Zustand.webSocket = Daten }, [Typen.LOCK_RE_CONNECT](Status, Daten) { state.lockReconnect = Daten }, [Typen.SET_PING_INTERVAL](Status, Daten) { state.pingInterval = Daten }, [Typen.SET_MSG_LIST](Status, Daten) { Status.MessageList.Push(Daten) state.msgItem = Daten }, } const Aktionen = { initWebSocket({ Status, Commit, Dispatch, RootState }) { wenn (Zustand.webSocket) { zurückkehren } const realUrl = WSS_URL + rootState.doctorBasicInfo.token const webSocket = neuer WebSocket(realUrl) webSocket.onopen = () => { console.log('Verbindung herstellen'); Versand('HerzCheck') } webSocket.onmessage = e => { console.log('Empfangene Nachricht', e); versuchen { wenn (Typ von e.data === 'Zeichenfolge' und e.data !== 'PONG') { let res = JSON.parse(e.data) console.log('Empfangener Inhalt', res); commit('SET_MSG_LIST', res) } } Fang (Fehler) {} } webSocket.onclose = () => { console.log('schließen'); Versand('erneut verbinden') } webSocket.onerror = () => { console.log('fehlgeschlagen'); Versand('erneut verbinden') } commit('INIT_WEBSOCKET', webSocket) }, // Heartbeat-Paket heartCheck({ state, commit }) { console.log(Status, 'Status'); const { webSocket } = Status const pingInterval = setInterval(() => { wenn (webSocket.readyState === 1) { webSocket.send('PING') } }, 20000) commit('SET_PING_INTERVAL', Ping-Intervall) }, //Erneut verbinden reConnect({ status, commit, dispatch }) { wenn (Zustand.SperreNeuverbinden) { zurückkehren } commit('INIT_WEBSOCKET', null) commit('LOCK_RE_CONNECT', wahr) setzeTimeout(() => { Versand('initWebSocket') commit('LOCK_RE_CONNECT', falsch) }, 20000) }, } const getter = { webSocket: Status => Status.webSocket, Nachrichtenliste: Status => Status.Nachrichtenliste, msgItem: Status => Status.msgItem, } Standard exportieren { Namespace: wahr, Zustand, Aktionen, Mutationen, Getter } Seitenabruf Methoden: { ...mapActions("webSocket", ["initWebSocket", "schließen"]), drückeItem(Item) { const initMsg = Element; diese.msgList.push(initMsg); } } montiert() { dies.initWebSocket(); } betrachten: msgItem: Funktion (Item) { dies.pushItem(item); } }, berechnet: { ...mapGetters("webSocket", ["messageList", "msgItem"]), }, Benutzeroberfläche <li v-for="(Element, i) in msgList" :key="i" class="msgBox"></li> Erläuterung der im Web bereitgestellten Implementierungsideen 1. Erstellen Sie zunächst einen WS-Link in Aktionen. 2. Verwenden Sie das Überwachungsattribut, um die entsprechenden Nachrichtenänderungen im Status auf der Seite zu überwachen. Wenn eine neue Nachricht empfangen wird, ändern Sie die auf der Seite angezeigte Nachrichtenliste und verwenden Sie die bidirektionale Bindung, um automatische Seitenaktualisierungen zu erreichen. 3. Rufen Sie beim Senden einer Nachricht die Backend-Schnittstelle auf und fügen Sie die neue Nachricht in die auf der Seite angezeigte Nachrichtenliste ein 4. Da es sich bei ws um einen langen Link handelt, der nach seiner Herstellung nicht so leicht getrennt werden kann, muss, solange die vom Backend gepushte Nachricht empfangen wird und festgestellt wird, ob Nachrichteninhalt vorhanden ist, nur die Nachrichtenliste im Status geändert werden, wenn Nachrichteninhalt vorhanden ist. Die Seite wird dann automatisch entsprechend dem Überwachungsattribut aktualisiert, wodurch die Instant Messaging-Funktion perfekt realisiert wird. ZusammenfassenDies ist das Ende dieses Artikels über die Implementierung einer Echtzeit-Chat-Software mit WebSocket+Vuex. Weitere relevante Inhalte zum Echtzeit-Chat mit WebSocket+Vuex 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:
|
<<: So verwenden Sie den Linux-Befehl „basename“
>>: Ursachen und Lösungen für langsame MySQL-Abfragegeschwindigkeit und schlechte Leistung
Durch Klicken Bilder zu wechseln, ist im Leben ei...
Inhaltsverzeichnis einführen 1. Pica 2. Lena.js 3...
NProgress ist der Fortschrittsbalken, der oben im...
Die Standardportnummer des Remotedesktops des Win...
1. Wenn der Benutzer über die Berechtigung zum Er...
Ein Problem, auf das Frontend-Entwickler häufig s...
F: Wenn Sie Outlook oder IE verwenden, wird beim ...
Hintergrund Ich möchte die Webpack-Version überpr...
In diesem Artikelbeispiel wird der spezifische Co...
React Native ist ein plattformübergreifendes Fram...
In Bezug auf das Nginx-Panikproblem müssen wir zu...
Kürzlich hat das WeChat Mini-Programm Anpassungen...
In diesem Artikel wird der spezifische Code von j...
Inhaltsverzeichnis Vorwort Ideenstartgeschwindigk...
1. Wie installiert man? 1. [Ausführen] -> [cmd...