Vue+SSH-Framework zur Realisierung von Online-Chat

Vue+SSH-Framework zur Realisierung von Online-Chat

In diesem Artikel wird der spezifische Code des Vue+ssh-Frameworks zur Realisierung von Online-Chats zu Ihrer Information bereitgestellt. Der spezifische Inhalt ist wie folgt

Rendern

Kernteil

Websocket-Programmierung

Senden Sie eine Nachricht an das Backend

<Vorlage>
<el-container>
  <el-header>
  </el-header>
  <el-main>
    <div class="cht">
   <div v-for="(d,index) in meinInhalt" :key="index">
      <meine :message="d.mess" :time="d.time" :bl="d.bl"></mein>
      </div>
      </div>
<div Klasse="smess">
  <el-Zeile>
    <el-col :span="18">
<el-input type="textarea" placeholder="Bitte Inhalt eingeben" v-model="textarea" class="text"></el-input>
    </el-col>
     <el-col :span="6">
       <br>
      <el-button type="primary" round @click="mess()">Nachricht senden</el-button>
    </el-col>
  </el-row>
  </div>
  </el-main>
</el-container>
</Vorlage>
<Stil>
.smess{
  links: 20%;
  Breite: 70 %;
  Position: absolut;
  oben: 70 %
}
.Text{
Rand: 1px durchgezogen #409eff;
}
.cht{
Breite: 55 %;
Höhe: 30%;
Hintergrundfarbe: Burlywood;
Rand links: 18 %;
}
</Stil>
<Skript>
Router aus "../../router/router.js" importieren;
importiere mein von "./my";
importiere Axios von „Axios“;
importiere Qs von „qs“;
var mylogo=localStorage.getItem("logo");//Aktueller Benutzeravatar var identity=localStorage.getItem("identity");//Aktuelle Identität var name=localStorage.getItem("username");//Aktueller Benutzername//Namen eines Lehrers von der vorherigen Seite abrufen var teacher='';
Standard exportieren {
   Komponenten:
      Mein
  },
  Methoden: {
    //Rufen Sie this.websocketsend() in der Methode auf, um Daten an den Server zu senden onConfirm() {
      //Zu übertragende Daten var data="Hello";
      dies.websocketsend(JSON.stringify(Daten));
    },
//Klicken Sie, um die Nachricht an das Hintergrund-Message() zu senden{
        var meineDaten=dieser.Textbereich;
         let data = {msg: meinedaten};
      dies.websocketsend(JSON.stringify(Daten));
    },
    /* */
    initWebSocket() {
      // Weosocket initialisieren
      //Den aktuellen Benutzernamen abrufen this.websock = new WebSocket(
        "ws://localhost:8080/PsychoSys/javasocket/" +Name
      );
      dies.websock.onmessage = dies.websocketonmessage;
      dies.websock.onerror = dies.websocketonerror;
      dies.websock.onopen = dies.websocketonopen;
      dies.websock.onclose = dies.websocketclose;
    },
    websocketonopen() {
      // Nachdem die Verbindung hergestellt ist, führen Sie die Sendemethode aus, um Daten zu senden. let data = { code: 0, msg: "Dies ist Client: erste Verbindung" };
    },
    websocketonerror() {
      console.log("WebSocket-Verbindung fehlgeschlagen");
    },
    websocketonmessage(e) {
      // Daten empfangen var s=eval('(' + e.data + ')');
  //Alle Daten hier einfügen this.mycontent.push({mess:s.msg,time:s.date,bl:s.isSelf,mylogo:mylogo});
    },
    websocketsend(Daten) {
      // Daten senden this.websock.send(Daten)
    },
    websocketclose(e) {
      // Schließen console.log("Verbindung geschlossen", e);
    }
  },
  erstellt() {
    console.log("erstellt");
    dies.initWebSocket();
  },
  Daten() {
    zurückkehren {
     WebSocket: null,
     Textbereich:'',
     meinInhalt:[],
     iden:true
     };
  },
  zerstört() {
    dies.websock.close();
  }
};
</Skript>

Komponente my.vue

<Vorlage>
<div v-if="bl" Klasse="rborders">
  <el-row Klasse="ms">
    <el-col :span="22">
      <el-row><span>{{Nachricht}}</span></el-row>
      <br>
       <el-row><span class="time">{{Zeit}}</span></el-row>
  </el-col>
    <el-col :span="2" >
      <img src="meinLogo" class="logo"/>
  </el-col>
    </el-row>
  </div>
  <div v-else Klasse="lborders">
 <el-Zeile>
  <el-col :span="2" >
      <img src="http://localhost:8080/PsychoSys/title/user.png" class="logo"/>
  </el-col>
  <br>
    <el-col :span="12">
      <el-Zeile>
        <el-col :span="24"><span >{{message}}</span></el-col>
        </el-row>
      <br>
       <el-row><span class="time">{{Zeit}}</span></el-row>
  </el-col>
    </el-row>
  </div>
</Vorlage>
<Stil>
.MS{
Textausrichtung: rechts;
Rand rechts: 0 %;
}
.Logo{
    Breite: 60px;
    Höhe: 60px;
    Randradius: 50 %;
}
.Zeit{
  Schriftgröße: 14px;
}
.lborders{
  Position: relativ;
  Rand links: 0 %;
}
.rborders{
  Position: relativ;
  Rand rechts: 0 %;
}
</Stil>
<Skript>
Standard exportieren {
   Requisiten: ['Nachricht', 'Zeit', 'bl', 'meinLogo'],
     Daten() {
        zurückkehren {
     };
      },
}
</Skript>

Hintergrundcode

Paket cn.com.socket;
importiere java.io.IOException;
importiere java.text.SimpleDateFormat;
importiere java.util.Date;
importiere java.util.Map;
importiere java.util.concurrent.ConcurrentHashMap;
 
importiere javax.websocket.OnClose;
importiere javax.websocket.OnError;
importiere javax.websocket.OnMessage;
importiere javax.websocket.OnOpen;
importiere javax.websocket.Session;
importiere javax.websocket.server.PathParam;
importiere javax.websocket.server.ServerEndpoint;
 
importiere org.hibernate.SessionFactory;
 
importiere net.sf.json.JSONObject;
@ServerEndpoint("/javasocket/{uname}")
öffentliche Klasse SocketPart {
 //Datum private static final SimpleDateFormat DATE_FORMAT = neues SimpleDateFormat("yyyy-MM-dd HH:mm"); 
 //Speichern Sie eine Sammlung von Sitzungen, der Werttyp ist die Java-Klasse SocketPart
 private statische Map<String,SocketPart> map=neue ConcurrentHashMap<String,SocketPart>();
    privater String-Benutzername;
    private Sitzungssitzung;
 private SessionFactory sf;
 öffentliche SessionFactory getSf() {
  Rückkehr sf;
 }
 öffentliche void setSf(SessionFactory sf) {
  dies.sf = sf;
 }
 @BeimÖffnen
 public void open(@PathParam("uname")String Benutzername,Session Sitzung){
  this.username=Benutzername;
  diese.session=Sitzung;
  map.put(Benutzername,dies);
 }
 @BeimSchließen
 öffentliche Leere schließen(){
  map.remove(dieser.Benutzername);
  versuchen {
   diese.Sitzung.schließen();
  } Fang (IOException e) {
   // TODO Automatisch generierter Catch-Block
   e.printStackTrace();
  }
  System.out.println("Schließen");
 }
 @BeiFehler
 öffentliche void Fehler(Throwable t) {
  // Fehlerbehandlungsoperation close() hinzufügen;
  System.out.println("Es ist ein Fehler aufgetreten");
  
  t.printStackTrace();
 }
 @OnMessage
 öffentliche void-Nachricht (String-Nachricht, Sitzungssitzung) {
  JSONObject jsonObject = JSONObject.fromObject(Nachricht);
  jsonObject.put("Datum", DATE_FORMAT.format(neues Datum()));
  //Geben Sie der Rezeption die aktuelle Sammlungsgröße weiter, sonst weiß ich nicht, wie ich sie speichern solljsonObject.put("cusize",map.size());
 //Informationen empfangen für (String s : map.keySet()) {
   wenn (dieser.Benutzername.ist gleich(map.get(s).Benutzername)) {
    jsonObject.put("istSelbst", true);
   }anders{
    jsonObject.put("istSelbst", false);
   }
   map.get(s).session.getAsyncRemote().sendText(jsonObject.toString());
  }
 }
}

Hinweis: Importieren Sie zwei Pakete

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 + Express + Socket realisiert Chat-Funktion
  • 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

<<:  So lösen Sie das Problem der Groß-/Kleinschreibung bei MySQL-Abfragen

>>:  Der gesamte Prozess der Installation und Konfiguration von Harbor1.7 auf CentOS7.5

Artikel empfehlen

Ausführliche Erklärung der Set- und WeakSet-Sammlungen in ES6

Inhaltsverzeichnis Ein Set ist eine spezielle Sam...

Beispiel einer Skriptmethode für die Bindung von Linux-Dualnetzwerkkarten

Bei der Bedienung und Konfiguration von Linux wir...

So ändern Sie MySQL, um Remoteverbindungen zuzulassen

In Bezug auf die MySQL-Remoteverbindung stoßen wi...

Detaillierte Erläuterung der FTP-Umgebungskonfigurationslösung (vsftpd)

1. Installieren Sie die vsftpd-Komponente Install...

Detaillierte Erläuterung der Datentypprobleme bei der JS-Array-Indexerkennung

Als ich ein WeChat-Applet-Projekt schrieb, gab es...

JavaScript imitiert den Jingdong-Lupeneffekt

In diesem Artikel wird der spezifische Code für J...

So testen Sie die Netzwerkgeschwindigkeit mit JavaScript

Inhaltsverzeichnis Vorwort Zusammenfassung des Pr...

Analyse der vier Transaktionsisolationsstufen in MySQL anhand von Beispielen

Vorwort Um bei Datenbankoperationen die Richtigke...

Anwendungsbeispiele für die MySQL-Volltextsuche

Inhaltsverzeichnis 1. Umweltvorbereitung 2. Daten...

Optimierung der MySQL 4G-Speicherserverkonfiguration

Da die Anzahl der Besuche auf der Website des Unt...