【发布时间】:2014-11-05 02:38:17
【问题描述】:
我需要开发网络应用程序。此应用程序将为某些应用程序服务器实现基于 Web 的终端(此项目将提供替代的瘦和跨平台的基于 Web 的客户端,而不是仅 Windows 的二进制客户端)。 我理解使用 ajax 与 app.server 通信是不正确的,因为我们需要更实时。所以我们需要比 ajax 更异步的东西。我打算使用网络套接字。
但我的应用程序也需要与远程应用程序服务器通信。现有的实现基于 TCP。所以我们必须使用这个现有的协议规范。我可以想象当接受新的 web-socket 连接时如何连接到远程服务器。而且我知道 web-socket 实现很简单,因为它是事件驱动的。但是我知道经典的 java 套接字是基于流的,我必须从流中读取,并且我的代码将被阻塞,直到一些数据从远程端出现。因此代码将无法响应其他事件。
我看到了一种使其正确的方法 - 将线程用于经典套接字。但我不知道它是否适用于 web java 应用程序。请以任何方式建议我。
【问题讨论】:
-
“事件驱动”或“基于流”(如您所想;我会说“事件驱动”与“阻塞”)与协议无关;它们与您使用的库有关。
-
我忘了说。可能很重要。每个 websocket 连接都有自己的 tcp socket 用于远程服务器通信。这是当前应用服务器实现的要求。
-
现在我认为它必须是 tcp socket 的一些二进制协议和 websocket 基于 text(json) 的协议之间的双向转换器。所以我想知道什么是最简单和最正确的方法。
标签: java sockets tcp websocket