go-swagger API 内でチャット WebSocket を提供しようとしています。この例を使用しています: https://github.com/gorilla/websocket/tree/master/examples/chat
サーバーの起動時にhttpに接続しようとしましたが、さらに読んだ後、これは機能しないことがわかりました:
func configureServer(s *http.Server, scheme, addr string) {
hub := chat.NewHub()
go hub.Run()
http.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) {
chat.ServeWs(hub, w, r)
})
}
次に、カスタムサーバーを使用して、server.Serve() を次のように変更してみました。
hub := chat.NewHub()
go hub.Run()
http.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) {
chat.ServeWs(hub, w, r)
})
if err := http.ListenAndServe(":8080", api.Serve(nil)); err != nil {
log.Fatalln(err)
}
しかし、これがうまくいかない理由にも気づきました。
WebSocket ハンドシェイク中のエラー: 予期しない応答コード: 404
いくつか読んだ後、/ws が見つからなかった理由を理解し始めました。
hub := chat.NewHub()
go hub.Run()
mux := http.NewServeMux()
mux.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) {
chat.ServeWs(hub, w, r)
})
server.SetHandler(mux)
if err := server.Serve(); err != nil {
log.Fatalln(err)
}
現在、websockets は機能しますが、残りの API は機能しません。理由はわかりますが、両方を機能させる方法はわかりません。私はgolangにかなり慣れていないので、これに苦労しています。
どうすればそれができますか?
ありがとう。