Java-springboot-websocket总结

  • 启动websocket支持
    WebSocketConfig
package com.websocket.demo2.config;


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;




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

}

@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。
注意,@Configuration注解的配置类有如下要求:
@Configuration不可以是final类型;
@Configuration不可以是匿名类;
嵌套的configuration必须是静态类。

@Bean标注在方法上(返回某个实例的方法),等价于spring的xml配置文件中的bean类,作用为:注册bean对象

  • 进行websocket的基本连接

WebsocketServer
websocket成功建立连接后,调用onopen方法;断开连接时调用onclose方法,当发生错误时调用onerror方法。

package com.websocket.demo2.config;

import org.springframework.stereotype.Component;

import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;


@ServerEndpoint("/hello/{userId}")
@Component
public class WebsocketServer {
    public WebsocketServer(){
        System.out.println("WebsocketTest");
    }
    @OnOpen
    public void onopen(Session session, @PathParam("userId")String userId){

        System.out.println("连接成功");
        session.getAsyncRemote().sendText("Hello client"+userId);

    }
    @OnClose
    public void onclose(Session session){

        System.out.println("成功关闭");

    }
     @OnError
    public void onError(Session session, Throwable error) {
        System.out.println("发生错误");
        error.printStackTrace();
    }

@ServerEndpoint注解用于配置一个编程式的端点

@Component (把普通pojo实例化到spring容器中,相当于配置文件中的)泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。

@OnOpen定义一个事件处理程序,当WebSocket 的连接状态readyState 变为1时调用;这意味着当前连接已经准备好发送和接受数据。这个事件处理程序通过 事件(建立连接时)触发。

@OnClose返回一个事件监听器,这个事件监听器将在 WebSocket 连接的readyState 变为 CLOSED时被调用

@OnError下可以定义一个发生错误时执行的回调函数

  • 测试是否连接上

Java-springboot-websocket总结_第1张图片

你可能感兴趣的:(Java,spring,boot,websocket,java)