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

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

王林
Lepaskan: 2024-02-11 23:03:08
ke hadapan
1023 orang telah melayarinya

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

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

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!

sumber:stackoverflow.com
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