Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk membangunkan aplikasi sembang mudah menggunakan bahasa Go

Bagaimana untuk membangunkan aplikasi sembang mudah menggunakan bahasa Go

WBOY
WBOYasal
2023-11-20 14:48:111357semak imbas

Bagaimana untuk membangunkan aplikasi sembang mudah menggunakan bahasa Go

Cara membangunkan aplikasi sembang mudah menggunakan bahasa Go

Dengan perkembangan pesat Internet, aplikasi sembang telah menjadi sangat diperlukan dalam kehidupan seharian manusia. nyawa hilang sebahagian. Sebagai bahasa pengaturcaraan yang pantas, boleh dipercayai dan cekap, bahasa Go semakin digemari oleh pembangun. Artikel ini akan memperkenalkan cara membangunkan aplikasi sembang mudah menggunakan bahasa Go.

1 Gambaran Keseluruhan Projek

Kami akan menggunakan bahasa Go untuk menulis aplikasi sembang mudah Pengguna boleh menghantar mesej kepada pengguna lain melalui aplikasi dan menerima mesej yang dihantar oleh pengguna lain. maklumat. Aplikasi sembang kami akan berkomunikasi berdasarkan protokol TCP.

2. Penyediaan projek

Sebelum kita mula menulis kod, kita perlu memasang persekitaran pembangunan bahasa Go. Anda boleh memuat turun pakej pemasangan dari https://golang.org/dl/ dan ikut arahan untuk memasangnya.

Selepas pemasangan selesai, kami boleh mengesahkan sama ada pemasangan berjaya melalui baris arahan Buka tetingkap baris arahan dan masukkan arahan berikut:

go version

Jika versi. nombor bahasa Go dipaparkan, ini bermakna Pemasangan berjaya.

3. Tulis kod

Buat direktori baharu, namakannya chatapp, dan kemudian buat fail bernama main.go dalam direktori. Kami akan menulis kod aplikasi sembang kami dalam fail ini.

  1. Import dependencies

Pertama, import pustaka standard bahasa Go dan dependensi yang diperlukan untuk aplikasi sembang:

package main

import (
    "bufio"
    "fmt"
    "log"
    "net"
    "os"
    "strings"
)
#🎜 🎜 #
    Takrifkan pembolehubah global
Tentukan beberapa pembolehubah global di luar fungsi utama untuk menyimpan maklumat berkaitan bilik sembang:

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)
)

#🎜 #Define🎜 functions
  1. Seterusnya, kami mentakrifkan beberapa fungsi untuk mengendalikan logik bilik sembang:

handleConnection: Mengendalikan logik sambungan, termasuk sambungan baharu Sertai dan tinggalkan;
  • handleMessages: Memproses logik mesej dan menyiarkan mesej kepada semua pengguna dalam talian; listenForCommands: Dengar arahan yang dibaca daripada input standard.
  • 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)
            }
        }
    }
  • fungsi utama
  • Akhir sekali, kami menulis fungsi utama dan memulakan aplikasi sembang di dalamnya: #🎜🎜
    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)
        }
    }
4 Jalankan aplikasi
  1. Simpan dan tutup fail main.go. Buka tetingkap baris arahan dan masukkan direktori chatapp, laksanakan arahan berikut untuk menjalankan aplikasi:
  2. go run main.go
5. Uji aplikasi

Buka berbilang tetingkap baris arahan dan gunakan arahan telnet untuk menyambung ke sembang Pelayan apl:

telnet localhost 8080

Mesej kemudiannya boleh dimasukkan dan dihantar kepada pengguna dalam talian yang lain. Anda boleh menggunakan arahan "/list" untuk melihat senarai pengguna dalam talian semasa, dan arahan "/exit" untuk keluar dari aplikasi sembang.

6. Ringkasan

Melalui pengenalan artikel ini, kami telah mempelajari cara menggunakan bahasa Go untuk membangunkan aplikasi sembang mudah. Dalam pembangunan sebenar, kami boleh mengembangkan aplikasi sembang mengikut keperluan, seperti menambah pengesahan pengguna, penyimpanan mesej dan fungsi lain. Saya harap artikel ini membantu anda, dan saya berharap anda membangunkan lebih banyak aplikasi yang baik dalam dunia bahasa Go!

Atas ialah kandungan terperinci Bagaimana untuk membangunkan aplikasi sembang mudah menggunakan bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn