如何解决当我落后于OpenVPN时,浏览器在建立WebSocket连接后一秒钟以错误1006关闭
我在Amazon VPS上托管了小型HTTP + WebSocket服务器。 Index.html具有用于连接WebSocket服务器并与其交换数据的JS代码。当我直接使用公共IP或域名连接服务器时,一切正常。
但是,我不想将此服务器公开,因此我将OpenVPN配置为私下连接到该服务器。
有时候,一切都可以通过OpenVPN正常运行,当我在浏览器(Chrome或Opera)中输入本地(内部VPN)服务器的IP地址时,它会成功加载index.html,连接我的WebSocket服务器并通过WebSocket连接成功交换数据。 但是有时(或几天)Websocket连接建立后1秒钟,浏览器将关闭它,错误代码为1006,没有任何描述。我的脚本尝试在此后1秒钟重新连接WebSocket,但结果始终是相同的。
我不知道为什么有时候一切都正常,有时候我几个小时都无法通过OpenVPN使用WebSocket。
有人可以描述为什么在OpenVPN上使用WebSocket时会发生错误1006,以及如何通过编码或重新配置Chrome,Opera或OpenVPN来消除错误?
解决方法
我发现问题仅在WS连接的任何一方发送大消息时才会发生。
我猜想,如果在浏览器和WebSocket服务器之间存在诸如VPN,防火墙或代理之类的中间件,那么大的WS消息可能会超出内部包的某些数据包大小或该中间件的限制,并且在消息发送期间会中断浏览器和服务器之间的连接转让。这种意外的断开连接会导致浏览器中出现错误1006。
如果您的客户端遇到意外断开并出现错误1006,请尝试最小化API的WebSocket消息大小。如果您需要发送大量数据,请不要一小块发送。您最好将其切成薄片并发送多条短消息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。