So entwickeln Sie eine einfache Chat-Anwendung mit der Go-Sprache

WBOY
Freigeben: 2023-11-20 14:48:11
Original
1333 Leute haben es durchsucht

So entwickeln Sie eine einfache Chat-Anwendung mit der Go-Sprache

So entwickeln Sie eine einfache Chat-Anwendung mit der Go-Sprache

Mit der rasanten Entwicklung des Internets sind Chat-Anwendungen zu einem unverzichtbaren Bestandteil des täglichen Lebens der Menschen geworden. Als schnelle, zuverlässige und effiziente Programmiersprache wird die Go-Sprache von Entwicklern zunehmend bevorzugt. In diesem Artikel wird erläutert, wie Sie eine einfache Chat-Anwendung mit der Go-Sprache entwickeln.

1. Projektübersicht

Wir werden die Go-Sprache verwenden, um eine einfache Chat-Anwendung zu schreiben. Benutzer können über die Anwendung Nachrichten an andere Benutzer senden und von anderen Benutzern gesendete Nachrichten empfangen. Unsere Chat-Anwendung kommuniziert basierend auf dem TCP-Protokoll.

2. Projektvorbereitung

Bevor wir mit dem Schreiben von Code beginnen, müssen wir die Go-Sprachentwicklungsumgebung installieren. Sie können das Installationspaket von https://golang.org/dl/ herunterladen und den Anweisungen zur Installation folgen.

Nachdem die Installation abgeschlossen ist, können wir über die Befehlszeile überprüfen, ob die Installation erfolgreich ist. Öffnen Sie das Befehlszeilenfenster und geben Sie den folgenden Befehl ein:

go version
Nach dem Login kopieren

Wenn die Versionsnummer der Go-Sprache angezeigt wird, bedeutet dies die Installation ist erfolgreich.

3. Code schreiben

Erstellen Sie ein neues Verzeichnis, nennen Sie es chatapp und erstellen Sie dann eine Datei mit dem Namen main.go im Verzeichnis. Wir werden unseren Chat-Anwendungscode in diese Datei schreiben.

  1. Abhängigkeiten importieren

Importieren Sie zunächst die Standardbibliothek der Go-Sprache und die für Chat-Anwendungen erforderlichen Abhängigkeiten:

package main

import (
    "bufio"
    "fmt"
    "log"
    "net"
    "os"
    "strings"
)
Nach dem Login kopieren
  1. Globale Variablen definieren

Definieren Sie einige globale Variablen außerhalb der Hauptfunktion, um Chatroom-bezogene Informationen zu speichern :

var (
    clients   = make(map[string]net.Conn)
    messages  = make(chan string)
    entering  = make(chan net.Conn)
    leaving   = make(chan net.Conn)
    allOnline = make(chan string)
)
Nach dem Login kopieren
  1. Funktionen definieren

Als nächstes definieren wir einige Funktionen, um die Logik des Chatrooms zu verwalten:

  • handleConnection: Verbindungslogik verwalten, einschließlich des Beitretens und Verlassens neuer Verbindungen;
  • handleMessages: Nachrichtenlogik verwalten , Nachrichten an alle Online-Benutzer senden;
  • listenForMessages: Auf Nachrichten warten, die von der Standardeingabe gelesen werden;
  • listenForCommands: Auf Befehle achten, die von der Standardeingabe gelesen werden;
func handleConnection(conn net.Conn) {
    entering <- conn

    scanner := bufio.NewScanner(conn)
    for scanner.Scan() {
        messages <- scanner.Text()
    }

    leaving <- conn
}

func handleMessages() {
    for {
        select {
        case msg := <-messages:
            for _, conn := range clients {
                fmt.Fprintln(conn, msg)
            }
        case conn := <-entering:
            clients[conn.RemoteAddr().String()] = conn
            allOnline <- fmt.Sprintf("User %s joined the chat.", conn.RemoteAddr().String())
        case conn := <-leaving:
            delete(clients, conn.RemoteAddr().String())
            allOnline <- fmt.Sprintf("User %s left the chat.", conn.RemoteAddr().String())
        }
    }
}

func listenForMessages() {
    scanner := bufio.NewScanner(os.Stdin)
    for scanner.Scan() {
        messages <- scanner.Text()
    }
}

func listenForCommands() {
    scanner := bufio.NewScanner(os.Stdin)
    for scanner.Scan() {
        command := scanner.Text()
        if strings.HasPrefix(command, "/list") {
            fmt.Println("Online users:")
            for client := range clients {
                fmt.Println(client)
            }
        } else if command == "/exit" {
            os.Exit(0)
        } else {
            fmt.Println("Unknown command:", command)
        }
    }
}
Nach dem Login kopieren
  1. Hauptfunktion

Zuletzt schreiben wir die Hauptfunktion und starten darin die Chat-Anwendung:

func main() {
    log.Println("Starting chat server...")

    go handleMessages()

    listener, err := net.Listen("tcp", ":8080")
    if err != nil {
        log.Fatal(err)
    }

    defer listener.Close()

    go listenForMessages()
    go listenForCommands()

    for {
        conn, err := listener.Accept()
        if err != nil {
            log.Println(err)
            continue
        }
        go handleConnection(conn)
    }
}
Nach dem Login kopieren

Viertens führen Sie die Anwendung aus

Speichern und schließen Sie die Datei main.go. Öffnen Sie ein Befehlszeilenfenster, geben Sie das Chatapp-Verzeichnis ein und führen Sie den folgenden Befehl aus, um die Anwendung auszuführen:

go run main.go
Nach dem Login kopieren

5. Testen Sie die Anwendung.

Öffnen Sie mehrere Befehlszeilenfenster. Verwenden Sie den Telnet-Befehl, um eine Verbindung zum Chat-Anwendungsserver herzustellen:

telnet localhost 8080
Nach dem Login kopieren

Anschließend können Sie eine Nachricht eingeben und an andere Online-Benutzer senden. Mit dem Befehl „/list“ können Sie die Liste der aktuellen Online-Benutzer anzeigen und mit dem Befehl „/exit“ die Chat-Anwendung beenden.

6. Zusammenfassung

Durch die Einleitung dieses Artikels haben wir gelernt, wie man mit der Go-Sprache eine einfache Chat-Anwendung entwickelt. In der tatsächlichen Entwicklung können wir die Chat-Anwendung je nach Bedarf erweitern, z. B. durch Hinzufügen von Benutzerauthentifizierung, Nachrichtenspeicherung und anderen Funktionen. Ich hoffe, dieser Artikel ist hilfreich für Sie und wünsche Ihnen, dass Sie weitere gute Anwendungen in der Welt der Go-Sprache entwickeln!

Das obige ist der detaillierte Inhalt vonSo entwickeln Sie eine einfache Chat-Anwendung mit der Go-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!