我有一个设置,其中有一个客户端通过nginx代理使用websockets连接到服务器(这样叫吗?)。它正在使用upstream
模块。
为了不浪费宝贵的资源,我们将keepalive_timeout 10m;
设置为10分钟的超时时间。
一切都进展顺利,直到我们想向用户显示有意义的诊断信息,以说明客户端断开连接的原因。超时结束时,websocket不会干净关闭,而javascript websocket onclose事件显示一个空字符串作为关闭的原因,错误代码1006和wasClean
属性为false。这对我们不利,因为我们要么将意外的websocket关闭视为隐藏实际错误的正常超时,要么将它们全部视为错误,并可能使我们的用户将错误消息误认为正常行为。
当nginx中的超时超时时,是否可以正确关闭websocket?如果没有,可以在断开事件中添加原因字符串吗?还是有办法至少使闭包具有不同的错误代码?