Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Memaparkan Output Masa Nyata daripada Perintah Dilaksanakan dalam Bot Sembang?
Berkomunikasi Output Masa Nyata daripada Perintah Dilaksanakan dalam Bot Sembang
Apabila mereka bentuk bot sembang yang mampu melaksanakan arahan, mengekstrak dan memaparkan output dalam masa sebenar adalah penting. Ini boleh mencabar apabila pelaksanaan sedia ada mengembalikan semua stdout sekaligus dan bukannya secara berperingkat.
Menyelesaikan Masalah Pendekatan Sedia Ada
Kod bot anda, yang menggunakan func runcommand, mengumpul dan melepaskan semua stdout setelah pelaksanaan selesai. Untuk mencapai output masa nyata, kami akan meneroka pendekatan alternatif.
Teknik Paip Output Masa Nyata
Kami memperkenalkan teknik yang terus menyalurkan output daripada melaksanakan arahan ke dalam sembang. Ini melibatkan:
Menyediakan goroutine untuk terus mencetak output:
go func() { for scanner.Scan() { fmt.Printf("\t > %s\n", scanner.Text()) } }()
Kod Contoh
Berikut ialah contoh yang memaipkan output masa nyata daripada arahan ekor yang digunakan untuk memantau fail log:
package main import ( "os" "os/exec" "fmt" "bufio" ) func main() { cmd := exec.Command("tail", "-f", "/usr/local/var/log/redis.log") // create a pipe for the output of the script cmdReader, err := cmd.StdoutPipe() if err != nil { fmt.Fprintln(os.Stderr, "Error creating StdoutPipe for Cmd", err) return } scanner := bufio.NewScanner(cmdReader) go func() { for scanner.Scan() { fmt.Printf("\t > %s\n", scanner.Text()) } }() err = cmd.Start() if err != nil { fmt.Fprintln(os.Stderr, "Error starting Cmd", err) return } err = cmd.Wait() if err != nil { fmt.Fprintln(os.Stderr, "Error waiting for Cmd", err) return } }
Dengan melaksanakan teknik ini, bot anda boleh memaparkan output arahan yang dilaksanakan dalam masa nyata, meningkatkan pengalaman pengguna dalam aplikasi sembang anda.
Atas ialah kandungan terperinci Bagaimana untuk Memaparkan Output Masa Nyata daripada Perintah Dilaksanakan dalam Bot Sembang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!