我需要开发Web应用程序。此应用程序将为某些应用程序服务器实现基于Web的终端(此项目将提供替代的瘦和跨平台基于Web的客户端,而不是仅限Windows的二进制客户端)。 我理解,使用ajax与app.server进行通信是不正确的,因为我们需要更加实时。所以我们需要比ajax更异步的东西。我打算使用网络套接字。
但我的应用程序也需要与远程应用程序服务器通信。现有实施基于TCP。所以我们必须使用这个现有的协议规范。我可以想象当接受新的Web套接字连接时如何连接到远程服务器。我知道Web套接字实现很容易,因为它是由事件驱动的。但是我知道经典的Java套接字是基于流的,我必须从流中读取并且我的代码将被阻止,直到从远程端出现一些数据。因此代码将无法响应其他事件。
我看到了一种使其正确的方法 - 将线程用于经典套接字。但我不知道它对于web java应用程序是否正确。请以任何方式建议我。
答案 0 :(得分:0)
Java有多种方式可以异步通信,以便不同的连接不会相互阻塞。当前的标准是Java Non-blocking IO framework,它以Channel的形式抽象每个网络连接,并将它们分组在Selector下,找出哪些频道当前已准备好接收数据或刚收到的数据可以通过您的代码检索。
框架使用单独的后台线程处理实际的IO,因此几乎可以立即写入和读取套接字。