Java 为每个连接的客户端分离websocket

Java 为每个连接的客户端分离websocket,java,javascript,networking,websocket,Java,Javascript,Networking,Websocket,我计划开发JavaScript客户端应用程序,该应用程序将使用websocket连接到Java服务器。服务器应该处理多个连接的客户端。 经过一番阅读,我发现websocket是单线程的。如果我想运行一段时间内可以阻止所有内容的数据库查询,这是不好的 我考虑的是为每个JavaScript客户端打开单独的websocket。一个套接字正在侦听新的连接,当连接建立时,会创建一些唯一的id。然后打开新的websocket并使用侦听器套接字将id发送给客户端。当客户端收到id时,关闭第一个套接字并连接到新

我计划开发JavaScript客户端应用程序,该应用程序将使用websocket连接到Java服务器。服务器应该处理多个连接的客户端。 经过一番阅读,我发现websocket是单线程的。如果我想运行一段时间内可以阻止所有内容的数据库查询,这是不好的

我考虑的是为每个JavaScript客户端打开单独的websocket。一个套接字正在侦听新的连接,当连接建立时,会创建一些唯一的id。然后打开新的websocket并使用侦听器套接字将id发送给客户端。当客户端收到id时,关闭第一个套接字并连接到新的套接字


你认为这是个好办法吗?也许我错过了什么

您应该在服务器上使用NodeJS来处理套接字i/o。您可以通过javascript客户端应用程序连接到它,然后调用基于Java的API。NodeJS是非阻塞(异步)的,您应该能够利用现有的Javascripting技能快速构建节点应用程序。您甚至可以使用完整的平均堆栈来构建客户机/服务器应用程序。或者是两个常用的开始位置。

您应该使用服务器上的NodeJ来处理套接字i/o。您可以通过javascript客户端应用程序连接到它,然后调用基于Java的API。NodeJS是非阻塞(异步)的,您应该能够利用现有的Javascripting技能快速构建节点应用程序。您甚至可以使用完整的平均堆栈来构建客户机/服务器应用程序。或者是两个受欢迎的起点。

Spring 4为您提供了使用线程池的机会。文件如下:
Spring 4为您提供了使用线程池的机会。文件如下:

您可以使用来管理所有并发和线程管理。或者,您可以使用已经构建在Akka上并且非常好地支持WebSocket的。通过Play,您可以在服务器端的Java和Scala之间进行选择

您可以使用来管理所有并发和线程管理。或者,您可以使用已经构建在Akka上并且非常好地支持WebSocket的。通过Play,您可以在服务器端的Java和Scala之间进行选择

不是答案,只是想法,你考虑过Node.js吗?是javascript,我知道,但您有一些东西,比如Sails(),可以通过WebSocket以REST方式进行CRUD操作。WebSocket既不是单线程的,也不是多线程的,它们只是一个协议。它们的实现受线程限制的影响。如果您的Java Websocket实现只能从一个线程使用,那么请转到另一个实现。这不是一个答案,只是一个想法,您考虑过Node.js吗?是javascript,我知道,但您有一些东西,比如Sails(),可以通过WebSocket以REST方式进行CRUD操作。WebSocket既不是单线程的,也不是多线程的,它们只是一个协议。它们的实现受线程限制的影响。如果您的Java Websocket实现只能从一个线程使用,那么请转移到另一个实现。