JAVA从服务器推送到客户端

我想让客户端通过服务器相互查询而没有延迟(=没有轮询间隔)。

示例:服务器S,客户端A和B.

客户端A想要请求客户端B.客户端A将向服务器S发出请求,没有问题。 然后服务器S需要能够请求客户端B,但如何在没有轮询的情况下执行此操作?

所有node.js / APE(适用于PHP)技术都是为Web设计的,但我没有使用Web服务器。 Java是否有接近推送技术/框架的东西,而不是网络?

我真的更喜欢不需要每个客户端使用自己的保留端口的解决方案(例如,我不希望每个客户端最终使用1个WebService)

注意:所有客户端都在同一台计算机上。

几个选项……

  • 普通sockets通信。 java.net.Socket,java.net.ServerSocket。 最大的灵活性,但需要了解低级TCP / IP API /概念。

  • 好老的RMI。 基于Java的RPC层位于TCP / IP之上。 当客户端和服务器都在Java中并且通常位于同一子网中时,工作正常。 当客户端和/或服务器出现问题时可能会出现问题。

  • Spring Remoting,它实际上相当不错。

  • 双向Web服务。 即客户端托管自己的WSes,服务器在需要进行回调时调用这些WSes。

  • JMS就像有人提到的那样。

  • 分布式数据结构,请访问http://www.hazelcast.com/

有很多选择可供选择,不需要网络服务器。

如果你真的不想使用Web服务器,那么我会查看JMS 。 话虽这么说,所有酷孩子们现在都在使用网络服务器,因为这些协议无处不在。

您的用例需要消息传递协议。 我们并不真正知道您的问题的范围,但您已经说过您希望服务器在客户端之间交换请求,因此我会使用现有的解决方案而不是自己的方法。

已经提到JMS并且肯定是一种可行的基于Java的解决方案,另一种是XMPP ,它是通常用于即时消息传递的实时通信协议。

它是一种开放标准,在每种主要语言和平台上都支持服务器和客户端。 这将允许您拥有独立的应用程序,基于Web的应用程序和移动设备的应用程序,所有这些应用程序都可以相互通信。 您的用例唯一可能的问题是它是基于文本的。 既然你还没有说过你想要来回传递的请求,我不知道这是否适合你的账单。

您可以使用Smack在Java中进行客户端开发以及您想要的任何OS服务器。