【发布时间】:2014-07-22 10:02:18
【问题描述】:
我有一台服务器,它需要与客户端进行双向连接,并为少数网站提供 Web 服务。 实际上,webservice 是一个将网站请求植根于客户端的经销商。
场景是:
- Dealer 启动它的 Web 服务,同时监听 12345 端口。
- Client-A 将其用户名发送到经销商的 12345 端口并继续侦听同一端口。
- 经销商接收用户名,验证用户并保持与用户的连接。
- Website-1 从经销商的 Web 服务调用 doOperation(operation-X,User-A)。
- 经销商检查用户-A 是否存在并向其发送“操作-X”请求。
- User-A 调用“Operation-X”并将结果发送回经销商。
- 经销商将结果发送回网站。
正如您在场景中看到的,服务器需要向客户端发送未经请求的消息并立即获得响应以服务网站。
首先,我实现了一个多线程双向套接字解决方案,它对少数客户端运行良好,但出现了性能问题,不幸的是我们有超过 10k 的并发用户。
然后,我找到了netty。这看起来是一个非常有前途的解决方案。但它的异步和事件驱动的性质让我担心。还有一些,它似乎是单向的。 http://apache-avro.679487.n3.nabble.com/Writing-Unsolicited-Messages-to-a-Connected-Netty-Client-td3675163.html
所以问题是如何进行异步握手(例如:http://biasedbit.com/handshaking-tutorial-with-netty/),然后从经销商处发送请求并获得结果?
** 非常感谢任何反馈、建议和知识分享
【问题讨论】:
标签: java web-services sockets netty bidirectional