Vue + Express + Socket realisiert Chat-Funktion

Vue + Express + Socket realisiert Chat-Funktion

In diesem Artikel wird der spezifische Code von Vue + Express + Socket zur Realisierung der Chat-Funktion zu Ihrer Information bereitgestellt. Der spezifische Inhalt ist wie folgt

Implementierung der Chatfunktion

Spezifische Funktionen

Nur um die Funktion zu realisieren, ohne die Schnittstelle zu verschönern

1. Geben Sie die Nachricht ein und klicken Sie auf Senden. Alle Benutzer können die folgende Nachricht erhalten.

2. Geben Sie die Benutzer-ID ein und klicken Sie auf „Verbinden“, um eine Verbindung zum entsprechenden Chat herzustellen. Geben Sie in einer anderen Schnittstelle die Benutzer-ID der Seite von gerade eben ein, geben Sie den Inhalt ein und klicken Sie auf „An die angegebene Person senden“. Dann kann die Seite von gerade eben ausgedruckt werden, aber andere Seiten werden nicht empfangen, wodurch die Funktion des privaten Chats realisiert wird.

3. Die Inhaltsanzeige des privaten Chats ist nicht speziell implementiert, aber das Empfangen und Senden von Nachrichten kann implementiert werden. Um die Inhaltsanzeige des privaten Chats zu implementieren, können Sie eine weitere private Chatseite hinzufügen

Screenshots

Projektvorbereitung

Es wird nur die Socket-Vorbereitung vorgestellt, die Konstruktion von Vue und Express wird nicht vorgestellt.

Frontend-Buchse

Installieren

npm ich vue-socket.io --speichern

Import

Importieren Sie VueSocketIO aus „vue-socket.io“.

Hintergrundbuchse

Installieren

npm ich socket.io --speichern

Import

Zum vom Express-Generator erstellten Ordner „bin/www“ hinzufügen

var io = erfordern('socket.io')(Server)'
io.on('Verbindung', (Socket) => {
  socket.on('Minenräumung', (Daten) => {
    konsole.log(Daten);
  });
});

Die spezifischen Screenshots sind wie folgt:

Projektrealisierung

Vue Code

HTML Code

<div Klasse="Startseite">
    Benutzer-ID: <input type="text" v-model="userid">
    Spitzname: <input type="text" v-model="name">
    Nachricht: <input type="text" v-model="msg" />
    <button @click="send">Senden</button>
    <button @click="join">Verbinden</button>
    <button @click="sendmsg">An angegebene Person senden</button>

    <ul>
      <li v-for="(Artikel,Index) in Chatliste" :Schlüssel="Artikelname + Index">
        {{ item.name }} sagt: {{ item.msg }}
      </li>
    </ul>
</div>

JS-Code

Standard exportieren {
  Name: "Home",
  Daten() {
    zurückkehren {
      Benutzer: [],
      Nachricht: "",
      Chatliste: [],
      Name: '',
      Benutzer-ID: ''
    };
  },
  Steckdosen: {
    // Mit dem Hintergrund-Socket verbinden
    verbinden() {
      console.log('Socket verbunden');
    },
    // Benutzer-Hintergrundaufruf, Daten hinzufügen sendMessage(data) {
      konsole.log(Daten);
      this.chatList.push(Daten)
    },
    // Benutzer-Hintergrundaufruf, Daten drucken receivemsg(data) {
      console.log('Empfangsnachricht');
      konsole.log(Daten);
    }
  },
  Methoden: {
    // Sende eine Nachricht in den Hintergrund send() {
      //Verwende emit, um die Nachrichtenmethode im Hintergrund-Socket aufzurufen this.$socket.emit("message", {
        Benutzer-ID: 100,
        Name: dieser.Name,
        Nachricht: diese.Nachricht
      });
    },
    // Benutzerverbindung herstellen join() {
      dies.$socket.emit("beitreten", {
        Benutzer-ID: diese.Benutzer-ID
      });
    },
    // Senden Sie eine Nachricht an das Backend für private Nachrichten sendmsg() {
      dies.$socket.emit("sendmsg", {
        Benutzer-ID: diese.Benutzer-ID,
        Nachricht: diese.Nachricht
      });
    }
  }
};

Express-Code

Fügen Sie der gerade in der WWW-Datei definierten Verbindung den folgenden Code hinzu

// Wird verwendet, um den Socket jedes Benutzers zu speichern, um die private Chat-Funktion zu implementieren let arrAllSocket = {}
// Eine Socket-Verbindung herstellen io.on('connection', (socket) => {
  console.log('Verbunden');
  // Konsole.log(Socket);
  // Die Join-Funktion wird von Benutzern zum Herstellen einer Verbindung verwendet socket.on('join', function (obj) {
    Konsole.log(Obj.Benutzer-ID + "beitreten")
    // Speichere den Verbindungsstatus jedes Benutzers für private Nachrichten arrAllSocket[obj.userid] = socket
  })
  // Der Funktionsname zum Empfangen von Nachrichten, die vom Vordergrund gesendet werden, lautet message
  socket.on('Nachricht', (Daten) => {
    konsole.log(Daten);
    //Senden Sie die Nachricht zurück an die Rezeption (rufen Sie die in der Rezeption definierte Methode auf). Der Funktionsname lautet sendMessage
    io.emit('sendMessage', Daten);
  });
  // Private Nachricht socket.on('sendmsg', function (data) {
    konsole.log(Daten);
    // Benutzerverbindung abfragen let target = arrAllSocket[data.userid]
    wenn (Ziel) {
      //Senden Sie eine Nachricht an die angegebene Person target.emit('receivemsg', data)
    }
  })
})

Hintergrundcode-Kapselung

Da die WWW-Datei nicht zu viel Code enthalten sollte, wird dieser Teil des Codes gekapselt

1. Erstellen Sie im Projektverzeichnis einen io-Ordner mit der folgenden Struktur

2. Verschieben Sie den vorherigen Teil des Codes in io/index.js

Der Code lautet wie folgt

// Übergebe den Server als Parameter an module.exports = function (server) {
  var io = erfordern('socket.io')(Server);
// Wird verwendet, um den Socket jedes Benutzers zu speichern, um die private Chat-Funktion zu implementieren. let arrAllSocket = {}
// Eine Socket-Verbindung herstellen io.on('connection', (socket) => {
    console.log('Verbunden');
    // Konsole.log(Socket);
    // Die Join-Funktion wird von Benutzern zum Herstellen einer Verbindung verwendet socket.on('join', function (obj) {
      Konsole.log(Obj.Benutzer-ID + "beitreten")
      // Speichere den Verbindungsstatus jedes Benutzers für private Nachrichten arrAllSocket[obj.userid] = socket
    })
    // Der Funktionsname zum Empfangen von Nachrichten, die vom Vordergrund gesendet werden, lautet message
    socket.on('Nachricht', (Daten) => {
      konsole.log(Daten);
      //Senden Sie die Nachricht zurück an die Rezeption (rufen Sie die in der Rezeption definierte Methode auf). Der Funktionsname lautet sendMessage
      io.emit('sendMessage', Daten);
    });
    // Private Nachricht socket.on('sendmsg', function (data) {
      konsole.log(Daten);
      // Benutzerverbindung abfragen let target = arrAllSocket[data.userid]
      wenn (Ziel) {
        //Senden Sie eine Nachricht an die angegebene Person target.emit('receivemsg', data)
      }
    })
  })
}

Verwenden Sie abschließend den folgenden Code in der WWW-Datei, um die Datei einzuführen

var io = erfordern('../io')
io(Server)

An dieser Stelle sind die Grundfunktionen des Chattens realisiert. Notieren Sie es zur späteren Verwendung.

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:
  • Vue implementiert Chat-Schnittstelle
  • Vue realisiert Web-Online-Chat-Funktion
  • Das Vue + Webterminal imitiert die Chatroom-Funktion der WeChat-Webversion
  • Vue.js imitiert das WeChat-Chatfenster, um Komponentenfunktionen anzuzeigen
  • Vue + socket.io implementiert einen einfachen Chatroom-Beispielcode
  • Eine Single-Page-Anwendungsfunktion, die mobiles QQ basierend auf Vue2 imitiert (Zugriff auf Chatbot)
  • So verwenden Sie RongCloud IM, um die Chat-Funktion im Vue Cli 3-Projekt zu implementieren
  • Beispiel einer von Vue implementierten WeChat-Roboter-Chat-Funktion [mit Quellcode-Download]
  • Mehrpersonen-Online-Chatroom basierend auf Vue und WebSocket
  • Vue+SSH-Framework zur Realisierung von Online-Chat

<<:  MySQL-Optimierungsstrategie (empfohlen)

>>:  Detaillierte Anweisungen zur Installation von Jenkins auf Ubuntu 16.04

Artikel empfehlen

Details zu gängigen Javascript-Funktionen höherer Ordnung

Inhaltsverzeichnis 1. Gemeinsame Funktionen höher...

Windows Server 2008-Tutorial zur Überwachung der Serverleistung

Als Nächstes erfahren Sie, wie Sie die Serverleis...

So installieren Sie Django in einer virtuellen Umgebung unter Ubuntu

Führen Sie die folgenden Vorgänge im Ubuntu-Befeh...

Eine einfache Möglichkeit zum Erstellen einer Docker-Umgebung

Lassen Sie uns zunächst verstehen, was Docker ist...

Detaillierte Erklärung des Overlay-Netzwerks in Docker

Übersetzt aus der offiziellen Docker-Dokumentatio...

Eine kurze Diskussion darüber, wie man Div und Tabelle auswählt und kombiniert

Das Seitenlayout war mir schon immer ein Anliegen...

Einführung in Linux-Umgebungsvariablen und Prozessadressraum

Inhaltsverzeichnis Linux-Umgebungsvariablen und P...

So importieren Sie Vue-Komponenten automatisch bei Bedarf

Inhaltsverzeichnis Globale Registrierung Teilregi...

So installieren Sie das ZSH-Terminal in CentOS 7.x

1. Installieren Sie grundlegende Komponenten Führ...

Zusammenfassung der MySQL-Fremdschlüsseleinschränkungen und Tabellenbeziehungen

Inhaltsverzeichnis Fremdschlüssel So ermitteln Si...

Super detaillierter GCC-Upgrade-Prozess unter Linux

Inhaltsverzeichnis Vorwort 1. Aktuelle gcc-Versio...

Detaillierte Erklärung der JS-Array-Methoden

Inhaltsverzeichnis 1. Das ursprüngliche Array wir...

Implementierung von Socket-Optionen in der Linux-Netzwerkprogrammierung

Socket-Optionsfunktion Funktion: Methoden zum Les...