Java WebSocket的使用(有代码案例)
创始人
2024-12-27 13:35:59
0

Java WebSocket 的使用

  • 什么是WebSocket
  • WebSocket的特点:
  • webSocket和HTTP的区别
  • webSocket的常用常见
  • 怎么用WebSocket
    • 前端(Vue)
    • 后端(Java)

什么是WebSocket

WebSocket是一种在Web开发中用于实现双向双向通信的协议。
它允许在客户端和服务器之间建立持久性的连接,使得数据可以在双方之间进行实时交换,而不需要客户端发起多个HTTP请求

在这里插入图片描述

WebSocket的特点:

  1. 双向通信

webSocke允许客户端和服务器之间双向实时通信,客户端可以向服务器发送消息,服务器也可以向客户端发送消息。

  1. 持久连接

webSocket连接是持久性的,一旦建立连接,他会保持打开状态,直到其中一方主动关闭连接

  1. 低延迟

    webSocket使用单个TCP连接进行通信,相比多次HTTP请求-响应循环,具有更低的通信延迟

  2. 轻量级

    webSocket协议相对简单,通信数据头部较小,减少了通信的额外开销

webSocket和HTTP的区别

  1. 通信模式

HTTP是一种无状态的请求-响应协议,客户端向服务器发送请求,服务器处理请求并返回响应,然后连接立即关闭。每个请求都是独立的,不会保持连接状态
WebSocket允许在客户端和服务器之间建立持久性的双向连接,客户端和服务器可以通过这个连接实时的交换数据。客户端和服务器都可以同时发送和接收数据

  1. 连接性

HTTP协议是基于请求-响应模式的,每次请求都需要客户端发起新的连接,并在收到响应后关闭
WebSocket允许客户端和服务器之间建立持久性连接,连接建立之后可以一直保持打开状态,直到其中一方主动关闭连接或者发生错误

  1. 数据格式

HTTP协议通常用于传输文档、图像、视频等静态资源或者动态资源,数据格式通常是文本或者是二进制,但是在每次请求和响应中都需要携带HTTP的头部信息
webSocket协议支持传输文本或二进制数据,数据格式更加灵活,可以根据应用程序的需要自定义

  1. 性能和效率

HTTP协议在每次请求-响应周期中都需要消耗额外的资源来建立和关闭连接,通信效率相对较低
webSocket通过在客户端和服务器之间建立持久连接,减少建立和关闭的开销,通信效率更高,延迟更低

webSocket的常用常见

在线聊天、股票行情、在线投票和调查,实时地图和位置等

怎么用WebSocket

前端(Vue)

     

后端(Java)

  1. 添加依赖(自己选择版本,我用的版本是这个)
                org.springframework.boot       spring-boot-starter-websocket       2.1.8.RELEASE      
  1. 创建注册WebSocket的服务组件
/**  * 注册web Socket的服务组件  */ @Configuration public class WebSocketConfiguration {       @Bean     public ServerEndpointExporter serverEndpointExporter(){         return new ServerEndpointExporter();     } }   
  1. 通信服务
/**  *  导入web Socket服务端组件web Socket Server用于和客户端通信  */ @Component @ServerEndpoint("/ws/{clientId}") public class WebSocketServer {      private static Map sessionMap = new HashMap<>();       @OnOpen     public void opOpen(Session session, @PathParam("clientId") String clientId) {         System.err.println("客户端:" + clientId + "建立连结");         sessionMap.put(clientId, session);     }      @OnClose     public void onClose(@PathParam("clientId") String clientId) {         sessionMap.remove(clientId);     }      /**      * 收到客户端消息后调用的方法      *      * @param message  客户端发送过来的消息      * @param clientId      */     @OnMessage     public void onMessage(String message, @PathParam("clientId") String clientId) {         System.err.println("收到来自客户端" + clientId + "的消息:" + message);     }       public void sendToAllClient(String message) {         Collection sessions = sessionMap.values();         for (Session session : sessions         ) {             try {                 session.getBasicRemote().sendText(message);             } catch (Exception e) {                 e.printStackTrace();             }          }     }   }  
  1. 服务端定时发送消息

注意如果用了定时器需要在启动类加上@EnableScheduling注解,否则定时任务不生效

@Component public class WebSocketTask {      @Autowired     private WebSocketServer webSocketServer;       /**      * 通过WebSocket每隔5秒向客户端发送消息      */     @Scheduled(cron = "0/5 * * * * ?")     public void sendMessageToClient(){         System.err.println(LocalDateTime.now());         webSocketServer.sendToAllClient("这是来自服务端的消息:"+ DateTimeFormatter.ofPattern("HH:mm:ss").format(LocalDateTime.now()));     } } 

相关内容

热门资讯

终于知道”新荣耀房卡领取码“牛... 终于知道”新荣耀房卡领取码“牛牛房卡哪里有卖微信房卡充值 添加房卡批售商:微【113857776】复...
终于知道”新久情房卡怎么得“牛... 终于知道”新久情房卡怎么得“牛牛房卡最低价格 微信牛牛房卡客服微信号微信游戏中心打开微信,添加客服【...
终于知道”新天道房卡获取“新道... 终于知道”新天道房卡获取“新道游房间卡怎么购买 微信牛牛房卡客服微信号微信游戏中心打开微信,添加客服...
终于知道”人海大厅房卡充值“炸... 终于知道”人海大厅房卡充值“炸金花房间卡怎么购买 微信牛牛房卡客服微信号微信游戏中心打开微信,添加客...
终于知道”财神在哪里买房卡“新... 来教大家如何使用在哪里买房卡房卡充值 添加房卡批售商:微【113857775】复制到微信搜索、直接添...
终于知道”新长虹如何买房卡“新... 终于知道”新长虹如何买房卡“新猴王大厅房间卡怎么购买 微信牛牛房卡客服微信号微信游戏中心打开微信,添...
终于知道”新金龙房卡领取码“人... 房卡领取码是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:113857776许多玩家在游戏中会购买房...
终于知道”新九哥房卡在哪里买“... 房卡在哪里买是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:113857776许多玩家在游戏中会购买...
终于知道”新八戒房卡怎么得“人... 终于知道”新八戒房卡怎么得“人海大厅房卡充值 微信牛牛房卡客服微信号微信游戏中心打开微信,添加客服【...
终于知道”新卡农房卡到哪里买“... 终于知道”新卡农房卡到哪里买“先锋大厅房间卡怎么购买微信房卡充值 添加房卡批售商:微【1138577...
终于知道”新财神哪里买低价获取... 来教大家如何使用哪里买低价获取房卡充值 添加房卡批售商:微【113857775】复制到微信搜索、直接...
终于知道”新天道在哪里买房卡“... 终于知道”新天道在哪里买房卡“王者大厅房间卡怎么购买 微信牛牛房卡客服微信号微信游戏中心打开微信,添...
终于知道”新详心房卡购买“拼十... 终于知道”新详心房卡购买“拼十房卡充值游戏中心打开微信,添加客服【113857776】,进入游戏中心...
终于知道”新老夫子房卡购买“王... 来教大家如何使用房卡充值房卡充值 添加房卡批售商:微【113857775】复制到微信搜索、直接添加房...
终于知道”新九游是如何购买的“... 第二也可以在游戏内商城:在游戏界面中找到 “微信金花,斗牛链接房卡”“商城”选项,选择房卡的购买选项...
终于知道”新上游房卡哪里充“先... 终于知道”新上游房卡哪里充“先锋大厅房间卡怎么购买微信房卡充值 添加房卡批售商:微【11385777...
终于知道”新九天获得房卡链接渠... 来教大家如何使用获得房卡链接渠道房卡充值 添加房卡批售商:微【113857775】复制到微信搜索、直...
终于知道”大众互娱在哪里买房卡... 终于知道”大众互娱在哪里买房卡“牛牛房卡哪里有卖 微信牛牛房卡客服微信号微信游戏中心打开微信,添加客...
终于知道”九九房卡获取方式“先... 终于知道”九九房卡获取方式“先锋大厅房间卡怎么购买微信房卡充值 添加房卡批售商:微【11385777...
终于知道”新荣耀获得房卡链接渠... 终于知道”新荣耀获得房卡链接渠道“新道游房卡充值微信房卡充值 添加房卡批售商:微【113857776...