webSocket中并发的策略

问题描述:当客户端发送请求建立连接以后,服务器会采用一种数据结构来维护这个连接,具体体现就是每次连接,服务器就会产生一个Session,这个Session可以唯一标识这个通道,发数据的时候会把指定的数据放到特定的通道里面去。那么并发情况下,如何实现呢?

从开始一个最简单的webSocket实例跑通了以后就慢慢考虑并发的问题,策略换了好几种,不过都是大家讨论后的结果,由于水平有限不一定是最优的方案。

服务器端通过继承父类的handleTextMessage方法来处理产生的session和从客户端传过来的参数。关于采用什么样的数据结构来存储session和message讨论出来了很多方案。

    protected void handleTextMessage(WebSocketSession session,
                                     TextMessage message) throws Exception {
        super.handleTextMessage(session, message);
    }
发送消息的时候需要把参数转化成TextMessage类型,然后调用通道的sendMessage方法,如下:

    public void sendMessage(String  request) throws IOException {
        TextMessage returnMessage = new TextMessage(request);
        session.sendMessage(returnMessage);
      }
    }
那么并发情况下,由于是多个客户端连接,需要建立多个通道,通道可以在handleTextMessage的方法里面采用一种数据结构收集起来,然后在sendMessage方法中指定通道然后发送对应的消息。在前一篇文章中提到我们项目中已经做好了一套通信机制:终端发过来的数据通过NIOServer转发到activeMQ中,也就是说所有的消息可以通过activeMQ的出口得到,那么这里就是一种观察者模式的使用了,也就是多个webSocket通道就是多个观察者,而这个监听的出口就是被观察者,当消息队列出口出来一条消息的时候,就类似于被观察者的发生变化了然后通知多个webSocket通道,webSocket通道知道出来消息了马上就检查这条消息是不是自己要的,如果是的话就发送到当前通道中。在handleTextMessage方法中,会从客户端传回来一个参数message,这个message就是表示通道订阅的消息,也就是每次从队列里面出来一条消息,我就检查这条消息是否是我订阅的,即将消息解析后然后和message参数比对。不知道我有没有说清楚,应该是不难理解的。

那么采

  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Java WebSocket是一个用于在Java应用程序实现WebSocket通信的库。WebSocket是一种在Web浏览器和服务器之间进行双向通信的协议,它可以实现实时数据传输和实时更新。 Java WebSocket提供了一组API,使Java应用程序能够创建WebSocket服务器或客户端,并处理WebSocket协议相关的操作。通过使用Java WebSocket库,开发人员可以在Java应用程序实现WebSocket通信,而不需要手动处理低层的WebSocket协议细节。 使用Java WebSocket,开发人员可以使用简单的编程模型来创建WebSocket服务器和客户端。开发人员可以使用注解或编程方式来定义WebSocket端点,然后处理来自客户端的消息和事件。开发人员还可以使用Java WebSocket提供的API来发送消息给客户端或从客户端接收消息。 Java WebSocket还提供了一些高级功能,例如处理二进制消息、处理 Ping/Pong消息、处理超时和错误、处理并发连接等。开发人员可以使用这些功能来优化和改进WebSocket通信的性能和可靠性。 总之,Java WebSocket是Java应用程序实现WebSocket通信的解决方案。它提供了一组API,使开发人员能够轻松地创建WebSocket服务器和客户端,并处理WebSocket协议相关的操作。使用Java WebSocket,开发人员可以实现实时数据传输和实时更新,并提供更好的用户体验。 ### 回答2: Java WebSocket jar是用于在Java程序实现WebSocket功能的库或工具。WebSocket是一种在客户端和服务器之间建立双向通信的协议,可以实现实时交互和数据传输。 在Java,可以使用WebSocket jar来创建WebSocket服务器或客户端。WebSocket jar提供了各种类和API,用于处理WebSocket连接、消息传输和事件处理。使用WebSocket jar,我们可以轻松地实现WebSocket协议,并与客户端进行双向通信。 通过WebSocket jar,我们可以创建一个WebSocket服务器,监听指定的端口,等待客户端的连接。一旦有客户端连接上来,服务器就可以接收或发送消息,与客户端进行实时的双向通信。 同时,我们也可以使用WebSocket jar创建一个WebSocket客户端,连接到指定的WebSocket服务器。客户端可以发送消息给服务器,服务器也可以向客户端发送消息,实现双向通信。 WebSocket jar还提供了一些事件回调函数,可以在连接建立、消息接收、错误发生等情况下触发,方便我们处理相应的逻辑。 总的来说,Java WebSocket jar是一个方便易用的工具,可以帮助我们在Java程序实现WebSocket功能,实现实时通信和数据传输。无论是创建WebSocket服务器还是WebSocket客户端,使用WebSocket jar都能简化我们的开发工作,提高效率。 ### 回答3: Java WebSocket是一种在Web应用程序实现双向通信的技术,它基于WebSocket协议,旨在提供一种实时、高效的通信机制。要使用Java WebSocket,可以通过引入相关的jar文件来实现。 首先,需要引入Java WebSocket的核心库jar文件,这个库文件通常是Apache Tomcat或者Jetty等Web容器自带的。通过将这个jar文件添加到项目的构建路径,就可以在项目使用Java WebSocket的相关类和方法。 其次,还可以根据具体的需求,引入一些扩展的jar文件,来拓展Java WebSocket的功能。比如,可以引入JSON库的jar文件,用于在WebSocket通信处理JSON格式的数据。另外,还可以引入一些与安全相关的jar文件,用于加密或者认证WebSocket连接。 在引入了所需的jar文件后,就可以在Java代码使用WebSocket相关的类和方法了。首先,需要创建一个WebSocket服务器端,监听指定的端口,并处理接收到的连接请求。然后,可以在WebSocket服务器端的相应方法处理连接建立、消息接收、错误处理等逻辑。在需要向客户端发送消息时,可以使用WebSocket提供的方法进行推送。 总之,通过引入Java WebSocket的jar文件,我们可以方便地在Java应用程序实现WebSocket通信。这里只是简单介绍了引入jar文件的过程及基本使用方法,实际应用会根据具体需求和框架选择合适的库文件并深入使用相关的API。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值