我正在嘗試構建一個包含兩部分的服務:后端和前端。兩者都在不同的 docker 容器上,并通過 docker-compose 配置和 nginx 容器進行通信。對于https訪問,一切都很好,但是當我嘗試使用websocket時,我有一個升級錯誤,即使Nginx配置得到了這個信息錯誤信息 :websocket: the client is not using the websocket protocol: 'upgrade' token not found in 'Connection' header我正在使用fasthttpandfasthttp/websocket作為我的 Golang 后端。代碼在 localhost 上運行(沒有 nginx 配置),但是 Docker + nginx 的組合似乎破壞了一些東西。前端使用react并且是一個簡單的let socket = new WebSocket(wss.mydomain.com/ws/uploadPicture/);編輯 :ctx.Request.Header.ConnectionUpgrade()之前使用時upgrader.Upgrade,結果是true,但是ctx.Response.Header.ConnectionUpgrade()是假的謝謝 !Golang 后端var upgrader = websocket.FastHTTPUpgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, CheckOrigin: func(ctx *fasthttp.RequestCtx) bool { return true },}func InitRouter() func(*fasthttp.RequestCtx) { router := fasthttprouter.New() router.GET("/ws/uploadPicture/", doWS) return router.Handler}func doWS(ctx *fasthttp.RequestCtx) { err := upgrader.Upgrade(ctx, func(conn *websocket.Conn) { //SHOULD DO STUFF }) if (err != nil) { logs.Error(err.Error()) //HIT THIS ERROR return }}...fasthttp.ListenAndServe(`:8000`, InitRouter())
3 回答

大話西游666
TA貢獻1817條經(jīng)驗 獲得超14個贊
我是 fasthttp 的 websocket 包的維護者。該問題已在 master 分支上修復。
下載它:
go get github.com/fasthttp/websocket@master
請再試一次。
如果問題仍然存在,請在https://github.com/fasthttp/websocket/issues中打開一個問題
很快,我將發(fā)布一個新版本。

一只斗牛犬
TA貢獻1784條經(jīng)驗 獲得超2個贊
事實證明這不是 Nginx/Docker 的問題,而是應該升級連接的 golang 中的 http 包。我將fasthttp與fasthttp/websocket一起使用,它應該可以工作,但它不在 docker 容器中。
我嘗試使用官方(而不是 fasthttp 的 fork)gorilla/websocket切換到httprouter ,并且連接成功升級。
去查一下問題出在哪里!
- 3 回答
- 0 關注
- 383 瀏覽
添加回答
舉報
0/150
提交
取消