胖Java客户端需要通过http/https与web服务器进行双向通信

胖Java客户端需要通过http/https与web服务器进行双向通信,java,networking,fat-client,Java,Networking,Fat Client,我希望Java客户机有一个带有servlet的双向数据通道(我对两者都有控制权),这样两个客户机都可以开始数据传输,而不必等待另一个客户机先做些什么,但要通过防火墙,这需要通过http或https进行隧道传输 我环顾四周,但我不相信我知道问谷歌的正确术语 我最初研究的是http隧道模块,但意识到另一端有一个web容器,我认为适当的方法是考虑一个胖客户机需要在家中通信。我认为http 1.1中的持久连接在这里可能非常有用。我可以轻松地进行心跳传输,以避免连接出现问题 在这一点上,我只需要做一个概念

我希望Java客户机有一个带有servlet的双向数据通道(我对两者都有控制权),这样两个客户机都可以开始数据传输,而不必等待另一个客户机先做些什么,但要通过防火墙,这需要通过http或https进行隧道传输

我环顾四周,但我不相信我知道问谷歌的正确术语

我最初研究的是http隧道模块,但意识到另一端有一个web容器,我认为适当的方法是考虑一个胖客户机需要在家中通信。我认为http 1.1中的持久连接在这里可能非常有用。我可以轻松地进行心跳传输,以避免连接出现问题

在这一点上,我只需要做一个概念证明,所以我主要需要一些现在可以工作的东西,然后可以优化,甚至以后更换

因此,我希望有指向项目的指针,允许我建立连接,其中任何一方都可以随意将信息(如序列化对象或描述性字节流)推送到另一方。如果可能的话,我更喜欢纯Java


编辑:谢谢你的指点。看来我所需要的将在Servlet3.0规范中提供,我最终可能会使用Servlet3.0规范,这取决于各种web容器何时支持它


目前,我正在研究Comet软件包,它似乎能够完全满足我的原型的需要。

它需要多快?您可以随时在客户端上进行轮询。只需经常检查新消息。

您可以通过HTTP使用协议。这是一种用于序列化数据的快速二进制协议。通常用于web服务样式的RPC通信,但没有理由不能是双向的-请参阅。它也是纯Java:-)

搜索词:comet,长轮询


这些主要用于AJAX环境,但我认为没有理由不能在Java项目中使用它们。

通常,这是通过让服务器不立即响应http请求来实现的。在发送响应之前,它会等待一些更新(或超时)。显然,需要注意确保服务器能够在负载下处理此问题


例如,请参见。

请查看Eclipse Net4J

它支持您提到的所有功能。一个特别的nice特性是,它支持HTTP连接池,所以您可以在客户端和服务器之间有很多通道,但只使用少数HTTP连接

唯一的问题是它根本没有文档。你只需要阅读源代码。一旦你弄明白了,它很容易使用

在旧的Net4J站点上还有一些图表