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服务器。