websocket多客户端接收消息_WebSocket之消息接收发送

websocket多客户端接收消息_WebSocket之消息接收发送_第1张图片

       WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。

      在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

      http协议是单向通信,一般由客户端发起请求,然后接收服务端响应。如果要实现客户端实时消息跟新功能如:更新聊天消息,更新邮件信息,更新后台系统员工待办事消息等,传统的做法是基于http协议,然后客户端定时轮询(如每秒访问一次)访问服务端,但是这样就会产生大量无效的http请求,浪费了服务器资源。

     而 WebSocket ,浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输,客户端可以向服务端发送通信,并且客户端不必轮询请求服务端,服务端如果有消息可以直接发送给客户端。

     以下是WebSocket实现聊天室代码示例:

      1.集成webSocket

       maven添加

      org.springframework.bootgroupId>      spring-boot-starter-websocketartifactId>  dependency>

       添加配置类:WebSocketConfig

@Configurationpublic class WebSocketConfig {
        @Bean    public ServerEndpointExporter serverEndpointExporter(){
            return new ServerEndpointExporter();    }}

2.开发WebSocket服务端:

//@ServerEndpoint("/imserver/{userId}") 、@Component即可启用//WebSocket服务//@OnOpen开启连接触发调用,@onClose关闭连接触发调用//,@onMessage接收消息触发掉用@ServerEndpoint("/imserver/{userId}")@Componentpublic class WebSocketServer {
        /**静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。*/    private static int onlineCount = 0;    //缓存每个客户端对应的MyWebSocket对象。    //如果是集群可改成redis或mysql    private static ConcurrentHashMap webSocketMap = new ConcurrentHashMap<>();    /**与某个客户端的连接会话,需要通过它来给客户端发送数据*/   

你可能感兴趣的:(websocket多客户端接收消息_WebSocket之消息接收发送)