复杂插座示例

时间:2016-10-03 16:10:26

标签: java sockets asynchronous synchronous

有一个复杂的套接字问题我希望有人可以指出我的示例方向。

我有一个标准的客户端/服务器同步消息设置,客户端发出请求,并阻止,直到收到响应并且每个人都满意为止。

然而现在我有了额外的要求,通过同步通道,客户端可以订阅某些事件,当服务器检测到它们时,异步发送它们。我认为最好的方法是在客户端发送订阅消息时为每个客户端打开第二个连接(并且服务器响应ack)但是我无法在线查找此类设置的示例。订阅某个事件后,客户端可以继续向服务器发送/ recv同步消息,同时还在socket2上侦听有关其订阅的事件的广播消息。

这里有哪些最佳做法?

谢谢 -

2 个答案:

答案 0 :(得分:0)

两个选项:

  1. 让每个客户端套接字都运行在自己的线程上。 "职业选手"这个解决方案是它易于设置。 "缺点"除非你在多线程环境中既有经验又舒适,否则代码可能会很快变得错误和复杂。

  2. 使用selector。可能你想要什么。最佳解决方案。

答案 1 :(得分:0)

您可以查看Netty:http://netty.io/

它支持同步和异步套接字,并提供构建漂亮的客户端/服务器应用程序所需的一切,而不必担心管道太多。

鉴于可用的库和框架的数量,除非它是一个玩具/学习项目,否则推出自己的实现可能不是一个好主意。