第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 go-swagger 提供 websocket 服務(wù)?

如何使用 go-swagger 提供 websocket 服務(wù)?

Go
守著一只汪 2023-07-31 14:56:55
我正在嘗試在我的 go-swagger API 中提供聊天 Websocket。我正在使用這個例子:https ://github.com/gorilla/websocket/tree/master/examples/chat我嘗試在服務(wù)器啟動時將其附加到 http,但進(jìn)一步閱讀后我發(fā)現(xiàn)這是行不通的: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)  })}然后我嘗試使用自定義服務(wù)器并將 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 握手期間出錯:意外的響應(yīng)代碼:404經(jīng)過一番閱讀后,我開始理解為什么從未找到 /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)}現(xiàn)在 websockets 可以工作,但其余 api 不能工作,我可以理解為什么,但我不知道如何讓它們都工作。我對 golang 相當(dāng)陌生,所以我正在努力解決這個問題。我怎么能這么做呢?
查看完整描述

1 回答

?
泛舟湖上清波郎朗

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個贊

你可以把它放在一個中間件中并在configure_XXX中掛接它


func mountWebSockets(next http.Handler) http.HandlerFunc {

? ?return func(w http.ResponseWriter, r *http.Request) {

? ? ? ?if r.URL.Path == "/ws" {

? ? ? ? ? ? chat.ServeWs(hub, w, r)

? ? ? ? ? ?return

? ? ? ?}

? ? ? ?next.ServeHTTP(w, r)

? ?}

}


查看完整回答
反對 回復(fù) 2023-07-31
  • 1 回答
  • 0 關(guān)注
  • 272 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號