Go では、サーバーがメイン スレッドを制御するため、サーバーの前にブラウザを起動するという従来のアプローチは効果がありません。そして今後の行動をブロックします。これを解決するには、より効率的な方法は、リスナーを開き、ブラウザを起動してからサーバー ループに入る方法です。
package main import ( "fmt" "log" "net/http" "github.com/skratchdot/open-golang/open" "github.com/julienschmidt/httprouter" ) func main() { r := httprouter.New() r.GET("/test", func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { fmt.Fprint(w, "Welcome!") }) l, err := net.Listen("tcp", "localhost:3000") if err != nil { log.Fatal(err) } err = open.Start("http://localhost:3000/test") if err != nil { log.Println(err) } http.Serve(l, r) log.Fatal(err) }
リスナーの開始、ブラウザの起動、およびサーバー ループを分離することで、次のことが保証されます。ブラウザは、サーバーがリッスンした後、サーバー ループが開始する前に開きます。これにより、ブラウザがサーバーに接続できることが保証され、ポーリングやブラウザの特定の動作への依存が不要になります。
以上がGo でサーバーの初期化後にブラウザを効率的に起動する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。