SpringBoot WebSocket客户端与服务端一对一收发信息

依赖

  
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-websocketartifactId>
        dependency>

配置类

@Configuration
public class WebSocketConfig  {
    @Bean //方法返回值交给springboot管理
    public ServerEndpointExporter serverEndpointExporter(){
        return  new ServerEndpointExporter();
    }
}

前端发送格式

ws://127.0.0.1:8080/chat/123456
123456为用户ID

{
    "id":"123456", //后端需要根据这个id回复
    "msg":"123" //前端发送的内容
}

SpringBoot WebSocket客户端与服务端一对一收发信息_第1张图片

收发消息

@ServerEndpoint("/chat/{id}") //请求路径
@Component
public class WebChat {

    private  static  final Map<String,Session> sessionMap = new ConcurrentHashMap<>() ;
    //存取用户

    @OnOpen //用户连接时
    public void onOpen(Session session,@PathParam(value = "id") String id){
        sessionMap.put(id,session); //用户连接成功 保存用户信息
    }
    @OnMessage //用户收到信息时
    public void onMessage(String message)  {
        JSONObject jsonObject = JSON.parseObject(message);
        String id =jsonObject.getString("id"); //用户id
        String msg =jsonObject.getString("msg"); //用户发送的信息

        Session session =sessionMap.get(id);//根据id获取Session
        session.getAsyncRemote().sendText("已收到消息,你的ID是"+id); //回复消息
    }
    

    public  void  sendMessage(String id,String message){
        Session  session= sessionMap.get(id);
        session.getAsyncRemote().sendText(id);
    }

    @OnClose
    public  void onClose(){

    }

你可能感兴趣的:(Spring,Boot,spring,boot,websocket,后端,java,开发语言,spring,maven)