In diesem Artikel wird hauptsächlich die Implementierung eines einfachen Chats vorgestellt. In Zukunft werden wir Emoticons, Foto-Upload und andere Funktionen hinzufügen. Tatsächlich war mein größter Zweifel, als ich zum ersten Mal damit in Kontakt kam, ob ich im frühen Stadium der Chat-Funktion ein Framework erstellen oder etwas herunterladen musste. Infolgedessen kann WebSocket direkt verwendet werden, und das Front-End und das Back-End können abgeglichen werden, und es ist auch kostenlos. Ich habe noch keine kostenpflichtigen Funktionen gefunden. Implementierungs-Effekt-Diagramm: Kapseln Sie zunächst eine websocket.js-Datei (Sie können sie direkt kopieren und dann das Format zum Empfangen/Senden von Daten in Ihr eigenes ändern). Store aus „@/store“ importieren var webSocket = null; var globalCallback = null; //Callback-Funktion für externen Datenempfang definieren //WebSocket initialisieren Exportfunktion initWebSocket (URL) { // Bestimmen Sie, ob der Browser WebSocket unterstützt if ("WebSocket" im Fenster) { webSocket = new WebSocket(url); //Ein Socket-Objekt erstellen } else { alert("Dieser Browser unterstützt kein WebSocket!"); } //Öffnen Sie webSocket.onopen = function () { : webSocketOpen(); }; //Mail empfangenwebSocket.onmessage = function (msg) { webSocketOnMessage(Nachricht); }; //Schließen webSocket.onclose = function () { webSocketClose(); }; //Callback-Methode bei Verbindungsfehler webSocket.onerror = function () { console.log("WebSocket-Verbindungsfehler"); }; } //Auslösen, wenn der Verbindungssocket hergestellt ist Exportfunktion webSocketOpen () { console.log("WebSocket-Verbindung erfolgreich"); } // Wird ausgelöst, wenn der Client Daten vom Server empfängt. e ist das empfangene Datenobjekt. Exportfunktion webSocketOnMessage (e) { // Im Store speichern und dann die Änderungen in der Chat-Oberfläche überwachen, um die empfangenen Informationen automatisch abzurufen store.commit('user/SET_WS_MSG', e) } //Daten senden Exportfunktion webSocketSend (data) { console.log('Daten senden'); //Konvertieren Sie hier das Datenformat entsprechend Ihren Anforderungen webSocket.send(JSON.stringify(data)); } //Schließen Sie den Socket Exportfunktion webSocketClose () { webSocket.schließen() console.log("Die Konversationsverbindung wurde geschlossen"); // } } //Eine Funktion, die an anderen Stellen aufgerufen wird, wo ein Socket zum Senden und Empfangen von Daten benötigt wird. Exportfunktion sendSock (agentData, callback) { globalCallback = Rückruf; //Dieser Rückruf ist die Funktion zum Empfangen von Socket-Daten, die bei einem Aufruf an anderer Stelle definiert sind, was sehr wichtig ist. //Die folgende Beurteilung basiert hauptsächlich auf der Möglichkeit einer Unterbrechung der Socket-Verbindung oder anderen Faktoren, sodass die Nachricht erneut gesendet werden kann. Schalter (webSocket.readyState) { //VERBINDEN: Der Wert ist 0 und zeigt damit an, dass eine Verbindung hergestellt wird. Fall webSocket.CONNECTING: setzeTimeout(Funktion () { console.log('Verbindung wird hergestellt...'); webSocketSend(agentData, Rückruf); }, 1000); brechen; //OPEN: Der Wert ist 1 und zeigt damit an, dass die Verbindung erfolgreich ist und eine Kommunikation möglich ist. Fall webSocket.OPEN: console.log('Verbindung erfolgreich'); webSocketSend(agentData); brechen; //SCHLIESSEN: Der Wert ist 2 und zeigt an, dass die Verbindung geschlossen wird. Fall webSocket.CLOSING: setzeTimeout(Funktion () { console.log('Verbindung wird geschlossen'); webSocketSend(agentData, Rückruf); }, 1000); brechen; //GESCHLOSSEN: Der Wert ist 3 und zeigt damit an, dass die Verbindung geschlossen wurde oder das Öffnen der Verbindung fehlgeschlagen ist. Fall webSocket.CLOSED: console.log('Verbindung geschlossen/geöffnet fehlgeschlagen'); // etwas tun brechen; Standard: // das passiert nie brechen; } } //Exportieren Sie die Socket-Initialisierungsfunktion, die Datensende- (Empfangs-)Funktion und die Verbindungsschließfunktion export default { initWebSocket, webSocketClose, sendSock }; Definieren Sie die im Speicher in Vuex empfangenen Daten speichern/modules/user.js lass Zustand = { webSocketMsg: '' }; //Zustand ändern const Mutationen = { //Vom WebSocket gesendete Nachrichten speichern SET_WS_MSG: (state, msg) => { state.webSocketMsg = Nachricht } } //Mutationen übermitteln. Wenn Sie Probleme mit dem Accept-Block haben, können Sie Folgendes hinzufügen, um //const actions = { anzuzeigen. // webSockets ({ commit }) { // commit('SET_WS_MSG', 2) // } //} store/getters.js //Den Status von state abrufen const getters = { webSocketMsg: Status => Status.Benutzer.webSocketMsg } Standardgetter exportieren Dann beginnen Sie mit der Verwendung von websocket.vue in der Chat-Oberfläche <Skript> importiere { initWebSocket, sendSock, webSocketClose } von '@/utils/websocket.js' Standard exportieren { Daten() { zurückkehren { // Diese Adresse wird vom Backend vergeben und für die Verbindung mit dem Websocket verwendet. Verschlüsseltes wss Unverschlüsseltes ws wsUrl:'ws://Adresse', } }, // Die erhaltenen Informationen aus dem berechneten Store abrufen: { getSocketMsg() { gib dies zurück.$store.state.user.webSocketMsg }, }, //Überwachen Sie getSocketMsg, um zu sehen, ob Daten empfangen wurden. watch: { getSocketMsg: { Handler: Funktion (Wert) { this.getConfigResult(Wert) }, }, //Dieser Schritt ist das CSS-Design meines Chatfensters. Sie müssen es nicht schreiben. Sie können bei Bedarf darauf zurückgreifen. // Ich speichere die empfangenen und gesendeten Nachrichten in obList und beobachte dann die Wertänderungen, um die Chat-Position unten zu halten (Überlauf: automatisch; in CSS) obList: { Handler: Funktion (Wert) { dies.$nextTick(() => { dies.$refs.chatContent.scrollTop = dies.$refs.chatContent.scrollHeight }) }, }, sofort: wahr, }, Methoden: { // Klicken Sie auf die Schaltfläche, um eine Chat-Verbindung herzustellen customerDialog() { initWebSocket(diese.wsUrl) }, // Die Methode zum Empfangen der Socket-Rückruffunktion zum Zurückgeben von Daten. Diese Funktion wird aufgerufen, wenn ich die empfangenen Daten überwache (in der obigen Überwachung). getConfigResult(Wert) { }, // Klicken Sie auf die Schaltfläche Senden, um die Nachricht zu senden. Das Format der zu sendenden Nachricht muss mit dem Backend-Befehl „sending()“ bestätigt werden. { sendSock('gesendete Nachricht') }, // Behandeln Sie das Ereignis zum Schließen des Chatfensters handleClose() { //Verbindung schließen webSocketClose() }, }, } </Skript> Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
>>: Lösen Sie das Spleißproblem beim Löschen von Bedingungen in myBatis
Nach dem Kauf eines Alibaba Cloud-Servers müssen ...
Inhaltsverzeichnis 1. Grundkonzepte und Grundbefe...
1. Tabellen erstellen <br /> Erstellen Sie ...
Inhaltsverzeichnis Vorwort 1. Gründe: 2. Lösungsi...
Inhaltsverzeichnis Überblick CommonJS-Spezifikati...
Ich bin heute auf dieses Problem gestoßen. Ich hab...
Möglicherweise verwenden Sie hier Include-Dateien,...
Dieser Artikel beschreibt, wie man mit Docker Zoo...
Inhaltsverzeichnis 1. ACID-Eigenschaften Syntax d...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis brauchen Kernidee Zwei Möglich...
Inhaltsverzeichnis 0. Der mit dem System geliefer...
Vorwort: Frontend: jq+h5, um den dynamischen Neun...
Zunächst einmal: Was ist 404 und Soft 404? 404: Ei...
Inhaltsverzeichnis Nehmen Sie Todolist als Beispi...