Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Rangka Kerja Web Golang dan Gin - Jalankan kod selepas penghala.Run()

Rangka Kerja Web Golang dan Gin - Jalankan kod selepas penghala.Run()

王林
王林ke hadapan
2024-02-11 23:03:08969semak imbas

Golang 和 Gin Web 框架 - 在 router.Run() 之后执行代码

editor php Banana membawakan anda kandungan menarik tentang rangka kerja Web Golang dan Gin. Apabila menulis aplikasi web menggunakan Gin, kita selalunya perlu melaksanakan beberapa kod selepas router.Run(). Kod ini mungkin termasuk sambungan pangkalan data, permulaan cache dan operasi lain. Artikel ini akan memperkenalkan secara terperinci cara melaksanakan kaedah melaksanakan kod selepas penghala.Run() dalam rangka kerja Gin, membantu anda menguasai kemahiran penggunaan rangka kerja Gin dengan lebih baik.

Kandungan soalan

Saya agak baru pergi jadi harap maaf jika ini sesuatu yang jelas.

Saya sedang sibuk menulis beberapa kod untuk pengesahan oauth 2.0. Sebahagian daripada ini bermakna saya perlu menyediakan url panggil balik. Dalam kod saya, saya perlu mencipta titik akhir panggilan balik dan setelah ia berfungsi dan berjalan, saya perlu memanggil titik akhir kebenaran yang kemudiannya akan bersambung ke titik akhir panggilan balik saya.

Masalah saya ialah memanggil run() dalam gin menyekat pelaksanaan saya, jadi saya tidak boleh melakukan apa-apa kebenaran lanjut selepas titik akhir panggilan balik siap dan berjalan. Adakah terdapat cara untuk menjalankan kod ini dalam goroutine yang berasingan supaya saya boleh melengkapkan proses kebenaran?

Berikut ialah contoh kasar kod dalam fungsi utama saya:

r := gin.Default()
//ReqHandler is an HtttpHandler func
r.GET("/redirect", ReqHandler)

r.Run(":5001")
ContinueAuth()

Penyelesaian

Buat pendengar dalam goroutine utama. Mulakan pelayan http dalam goroutine. Teruskan aliran pengesahan dalam goroutine utama.

r := gin.Default()
r.GET("/redirect", ReqHandler)

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

go func() {
   log.Fatal(r.RunListener(l))
}()

ContinueAuth()

select {} // wait forever

Mencipta pendengar dalam goroutine utama memastikan pendengar bersedia untuk memanggil semula daripada aliran pengesahan.

Atas ialah kandungan terperinci Rangka Kerja Web Golang dan Gin - Jalankan kod selepas penghala.Run(). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam