Bagaimana untuk membangunkan aplikasi sembang mudah menggunakan bahasa Go

WBOY
Lepaskan: 2023-11-20 14:48:11
asal
1334 orang telah melayarinya

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
Salin selepas log masuk

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"
)
Salin selepas log masuk
#🎜 🎜 #
    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)
)
Salin selepas log masuk

#🎜 #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)
            }
        }
    }
    Salin selepas log masuk
  • 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)
        }
    }
    Salin selepas log masuk
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
    Salin selepas log masuk
5. Uji aplikasi

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

telnet localhost 8080
Salin selepas log masuk
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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!