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

Tiefgreifendes Verständnis langer MySQL-Transaktionen

Vorwort: Dieser Artikel stellt hauptsächlich den ...

CentOS 8 offiziell veröffentlicht, basierend auf Red Hat Enterprise Linux 8

Das CentOS-Projekt, ein 100 % kompatibler Neuaufb...

So passen Sie die Bash-Eingabeaufforderung in Linux an

Vorwort Wie wir alle wissen, ist Bash (die Bourne...

Erfahrungen bei der Neugestaltung der Homepage von TOM.COM

<br />Ohne Vorwarnung sah ich auf cnBeta Neu...

Implementierung von Docker-Datenvolumenoperationen

Erste Schritte mit Datenvolumes Wenn wir im vorhe...

Ändern des Standard-Bildlaufleistenstils im Front-End-Projekt (Zusammenfassung)

Ich habe viele Projekte geschrieben, bei denen de...

Webdesign: Die genaue Platzierung und Verwendung massiver Materialien

Durch dreimaliges Auswendiglernen können Sie sich...