所以问题是我有十五个客户端需要能够相互通信。我的问题是如何做到这一点?显然,一种方法是简单地使客户端也成为服务器,但这意味着完全连接15个客户端所需的120个唯一连接。我不愿意这样做,因为它看起来很乱。
目前的解决方案: 每个新连接都让服务器关闭一个单独的线程来监听它。每个客户端都有一个单独的线程监视通道以获取传入信息。
服务器充当消息路由器:进程1需要向进程2发送消息,并向服务器发送指示预期收件人,发件人和消息的消息。
收到消息后,服务器将消息传递给进程2.侦听线程检测到它并将其传递给进程。
对于客户端之间的每条消息都是如此。
这看起来很笨重。是否有更好的方法/包用于此?
答案 0 :(得分:0)
UDP多播系统可以为此工作,但是你自己也会很复杂(因为你必须担心自己的同步和故障检测/纠正以及节点进出组)。
有各种中间件解决方案,包括分布式缓存,已经很好地解决了这个问题。看看Infinispan。如果这个级别太高而您只想要一个较低级别的解决方案,请尝试使用JGroups。我只列出那些因为我知道它们快速且可用,但那里还有很多其他的。