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 des Javascript-Klassenarrays

js-Arrays sind wahrscheinlich jedem bekannt, da s...

So stoppen Sie die CSS-Animation mittendrin und behalten die Haltung bei

Vorwort Ich bin einmal auf ein schwieriges Proble...

Lösen Sie das Problem, dass ifconfig im Docker nicht verfügbar ist

Als ich kürzlich Docker lernte, stellte ich fest,...

Analyse der Initialisierung des Quellcodes des Linux-Kernel-Schedulers

Inhaltsverzeichnis 1. Einleitung 2. Grundkonzepte...

JavaScript fügt Prototyp-Methodenimplementierung für integrierte Objekte hinzu

Die Reihenfolge, in der Objekte Methoden aufrufen...

Eine kurze Analyse der Unterschiede zwischen „:=“ und „=“ in MySQL

= Nur beim Setzen und Aktualisieren wirkt es wie ...

So richten Sie den Start einer JAR-Anwendung unter CentOS7 ein

Fallstricke bei der Projektimplementierung Beim B...

Was soll ich tun, wenn ich die Quelldatei einer Webseite nicht anzeigen kann?

F: Wenn Sie Outlook oder IE verwenden, wird beim ...

Implementierung der Docker-Container-Statuskonvertierung

Ein Zustandsübergangsdiagramm eines Docker-Contai...