Websockets情况 - 在端口80或443上,websocket消息没有通过

时间:2013-08-12 11:36:47

标签: http websocket jetty

在某种情况下,我的应用程序出现问题。

我们有一个嵌入了jetty webserver的java服务器,以及客户端的air app。

它在某个客户的单一情况下正常运作。

他们有一个不受他们管理的私人网络(并且很少有机会根据请求进行更改)。因此,他们允许的唯一端口是80和443。

服务器和客户端之间的通信是通过websockets和http。

" online"检查是通过http进行的,然后,我们使用websockets通知客户端,以便开始它们之间的通信。

事情是,在这种情况下,"在线"状态正常工作,客户端发送的任何通信(强制),当它通过http时,都会到达服务器,但是,当服务器与客户端通信时,使用websockets,它不起作用。

我们正在使用wireshark检查通信:在工作设置中,当客户端应用程序启动时,websocket显示在服务器端(在服务器上注册客户端)上。之后,仅用于从服务器到客户端的websockets也不会显示。

可能是什么问题? 80端口? (在该网络上443也是如此)。 可以阻止ws://消息的代理/防火墙吗? 我在某处读过wss://(encripted websockets)会起作用吗?

感谢您的帮助。


编辑,所以,我尝试使用https和wss通信,同样的事情发生..在客户端和服务器之间没有设置websocket(在服务器上注册客户端)。

客户网络上的http发生了这种情况。在我的测试网络上,它适用于http / ws但不适用于https / wss ..

1 个答案:

答案 0 :(得分:3)

有很多防火墙和网关“在野外”,不了解整个WebSocket HTTP / 1.1 GET - >升级 - > WebSocket机制。

有几个破坏的防火墙实现会尝试将WebSocket框架解释为HTTP / 1.1的不正确内容(这是对HTTP / 1.1规范的错误读取)并开始捣乱它。

检查/过滤/分析请求/响应内容的防火墙类型是最容易受到攻击的类型。

我会检查他们用来防火网络的硬件(或软件)是否兼容并升级为支持WebSocket RFC-6455。