我们在工作中遇到了一个奇怪的问题,我希望这里有人能给我一些解决问题的方法。
问题是我不能从我的Kubuntu 13.10工作站建立websocket连接。我用Chrome和Firefox都试过了。我有一个代理人,我一开始以为一定是这个原因。然而,我让一些同事尝试连接到相同的websocket echo演示,他们都能够,除了一个。他是唯一一个运行Ubuntu的人(和我一样),其他人都在Mac、Windows上,甚至还有一个在RedHat上!他们的工作都很好。
好的,现在是最奇怪的部分。我在工作站上创建并运行了一个虚拟机(无法连接的那个)。虚拟机是Lubuntu 13.10,你知道吗,这该死的东西建立了一个websocket连接。
所以任何关于如何解决这个问题的想法,甚至是一些解决方案的建议,将非常感谢。
呃…好吧,那个很蠢。
所以事实证明,在Linux中,你可以在你的网络代理设置(系统设置)中选中一个复选框,它将对所有协议使用相同的代理。
是的…别这样!
除非,也就是说,您的代理服务器支持SOCKS以及HTTP/HTTPS/FTP(极不可能)。
结果是,如果你选中那个复选框,你的代理服务器将被注册为SOCKS代理,并且由于某种原因,Chrome和Firefox中的websocket连接都想要使用它。所以你的HTTP代理最终会得到一堆奇怪的SOCKS握手,它不理解,任何websocket连接都会失败。
我们在Ubuntu和Kubuntu上都测试了这个问题,
TL,博士;除非您的代理服务器支持SOCKS协议,否则不要选中"对所有协议使用此代理服务器"复选框。相反,手动为不同的协议(http, https和ftp)填写相同的服务器,但将socks协议保留为空(或指向实际的socks代理服务器)。