springboot+websocket实现聊天易懂版

本文介绍了使用SpringBoot实现WebSocket聊天功能的详细步骤,包括配置WebSocket,选择非过时的配置类,实现处理器和拦截器。讨论了点对点聊天的逻辑思路,前端如何连接和断开,以及对错误和消息的处理。同时提到了系统公告和多对多聊天的实现策略,如利用Redis存储用户地址和设定公共地址作为聊天室。虽然本文未采用H5标准,但指出H5实现方式类似。
摘要由CSDN通过智能技术生成

PS:在做之前,我看了网上的,发现逻辑不通,有点没搞懂,而且方法已经过时。若觉得说得不对,请指出。

1、websocket 分为两种方式,1是使用sockjs,2是使用h5的标准

2、大部分是继承 AbstractWebSocketMessageBrokerConfigurer 进行配置,但实际这个类已经过时了

随便写了个类,可以看到已经提示过时了

然后实现的方法

@Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/webSocketServer").setAllowedOrigins("*").withSockJS();
    }

    
    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        registry.enableSimpleBroker("/queue","/topic");
    }

其中 registerStompEndpoints 方法是定义通道,这个不难理解。就是建立连接

而configureMessageBroker方法是定义请求应带的前缀

但我没搞懂的是,这样是可以了,确实方便,然后就是前端代码了,但是,对于请求、参数、消息等等,不进行一些拦截,判断处理吗?控制器也是简单的一个方法就可以了

@MessageMapping("/ws/chat")
    public void handleChat(Principal principal, String msg) {
        String destUser = msg.substring(msg.lastIndexOf(";") + 1, msg.length());
        String message = msg.substring(0, msg.lastIndexOf(";"));
        messagingTemplate.convertAndSendToUser(destUser, "/queue/chat", new ChatResp(message, principal.getName()));
    }

还有一些注解,或许注解以及继承的父类中有一定的处理,但并不是适应所有的实际需求吧?那这样的我实在是没搞懂(可能是我自己技术不够,勿喷)

而利用h5的还好,至少h5的能够自己处理连接前,连接后,发送消息,进行路径参数等判断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值