今天在測試Go的WebSocket連線時,剛開始client都可收到訊息,但過一陣子卻發生收不到訊息的狀況,檢查log看到read: websocket: close 1006 (abnormal closure): unexpected EOF
的訊息。
問題環境:
- Go 1.19
- github.com/gorilla/websocket v1.5.0
Go的WebSocket是使用gorilla/websocket
。
WebSocket Protocal Status code 1006是指連線在未收到close control frame的情況下關閉,即非正常的關閉。
查發現原因可能是出在測試環境對外有使用nginx反向代理,而nginx預設從server得到的回應時間timeout為60秒(proxy_read_timeout 60s
),因為client與server中間透過nginx溝通,又測試時可能一段時間沒操作超過上面預設的timeout限制所以發生close 1006 (abnormal closure): unexpected EOF的訊息導致WebSocket連線中斷。
在本機測試時因為沒有nginx即使server長時間未回應也會保持連線。
沒有留言:
張貼留言