Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >spring boot+token+websocket点对点推送?

spring boot+token+websocket点对点推送?

提问于 2018-06-28 01:10:45
回答 1关注 1查看 3.4K

微服务用token做认证,在websocket握手阶段可以对token进行认证,但还是实现不了点对点的推送?是不是必须得基于Session?

回答 1

用户2439349

发布于 2018-06-28 02:16:59

Spring WebSocket是可以使用token进行认证连接的,一定是你哪个部分配置错误导致的。

代码配置实例

代码语言:js
AI代码解释
复制
/**
 * WebSocket配置
 * @author lnkToKing
 */
@Configuration
/*
 * 开启使用STOMP协议来传输基于代理(message broker)的消息
 * 启用后控制器支持作用@MessgeMapping注解
 */
@EnableWebSocketMessageBroke
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

    @Value("${token-secret-key}")
    private String tokenSecretKey;

    //注册STOMP协议节点并映射url
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        //添加连接节点
        registry.addEndpoint("/endpoint").addInterceptors(new HandshakeInterceptor() {
            /**
             * websocket握手
             */
            @Override
            public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception {
                ServletServerHttpRequest req = (ServletServerHttpRequest) request;
                //获取token认证
                String token = req.getServletRequest().getParameter("token");
                //解析token获取用户信息
                Principal user = parseToken(token);
                if(user == null){   //如果token认证失败user为null,返回false拒绝握手
                    return false;
                }
                //保存认证用户
                attributes.put("user", user);
                return true;
            }

            @Override
            public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception exception) {

            }
        }).setHandshakeHandler(new DefaultHandshakeHandler(){
            @Override
            protected Principal determineUser(ServerHttpRequest request, WebSocketHandler wsHandler, Map<String, Object> attributes) {
                //设置认证用户
                return (Principal)attributes.get("user");
            }
        })

        .setAllowedOrigins("*") //允许跨域
        .withSockJS();  //指定使用SockJS协议
    }

    /**
     * 根据token认证授权
     * @param token
     */
    private Principal parseToken(String token){
        //TODO 解析token并获取认证用户信息
        return null;
    }
}
和开发者交流更多问题细节吧,去 写回答
相关文章
SpringBoot整合 ActiveMQ快速入门 实现点对点推送
ActiveMQ是一个高性能的消息服务, 它已经实现JMS接口(Java消息服务(Java Message Service),Java平台中关于面向消息中间件的接口), 所以我们可以直接在 Java 中使用
憧憬博客
2020/07/21
1.5K0
SpringBoot使用ActiveMq同时支持点对点推送和发布订阅
在SpringBoot中使用ActiveMq默认是只能点对点推送, ActiveMq还有一种方式就是发布订阅, 一个发布者, 多个订阅者, 形成一个点对面
憧憬博客
2020/07/21
1.2K0
SpringBoot使用ActiveMq同时支持点对点推送和发布订阅
spring websocket推送
spring websocket使用,在spring官网上已有相应的demo,这里主要描述推送到对应的浏览器客户端 基本的拦截配置处理 @Component public class MessageHandshakeInterceptor implements HandshakeInterceptor { public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketH
用户1418372
2018/09/13
1.5K0
WebRTC 点对点直播
作者:villainthr WebRTC 全称为:Web Real-Time Communication。它是为了解决 Web 端无法捕获音视频的能力,并且提供了 peer-to-peer(就是浏览器
腾讯IVWEB团队
2017/03/13
10.4K0
点对点传输现状,镭速高速点对点传输解决方案
点对点传输需求日益增长,但是面对点对点传输现状和挑战,不经让人有种迫切找到高速的点对点传输解决方案,下面给大家介绍一下点对点传输的现状与挑战。
镭速
2023/02/08
8070
点对点通信-简介
点对点连接是两个系统或进程之间的专用通信链路。想象一下直接连接两个系统的一条线路。两个系统独占此线路进行通信。 点对点通信的对立面是广播,在广播通信中,一个系统可以向多个系统传输。
全栈程序员站长
2022/09/13
9960
【PPP】链路点对点
Xiongan-桃子
2023/06/10
5150
【PPP】链路点对点
Go语言点对点通信
点对点通信就是客户端A发送消息给服务端,再由服务端把消息传递给客户端B.相同道理客户端B想给客户端A发送消息也需要把消息传递给服务端,再由服务端把消息传递给A
IT工作者
2022/04/02
5710
点对点协议PPP
 点对点协议PPP(Point-to-Point Protocol)是目前使用最广泛的点对点数据链路层协议
一个风轻云淡
2023/10/15
3030
点对点协议PPP
webrtc点对点文件传输
在用webrtc做视频通信的时候就想过另一个问题,能否利用点对点技术进行文件传输呢,如果能实现那点对点通信将大有可为。
蛋蛋编程手记
2023/02/25
1.2K0
webrtc点对点文件传输
点对点通信实验
s.bind(address)将套接字绑定到地址。address地址的格式取决于地址族。在AF_INET下,以元组(host,port)的形式表示地址。
全栈程序员站长
2022/09/16
6320
点对点通信实验
ActiveMQ点对点消息传递
  上篇文章中详细介绍了ActiveMQ。本文继续介绍ActiveMQ的具体操作 ActiveMQ 处理对象消息 1.定义消息载体对象 /** * Order Bean * 定义消息载体类型. 即要在ActiveMQ中传递的数据实体类型. * 消息载体对象必须实现接口java.io.Serializable, 因为消息需要在网络中传递,要求必须可序列化 * @author dengp * */ public class Order implements Serializable{ priva
用户4919348
2019/04/02
1.3K1
ActiveMQ点对点消息传递
OpenMPI(一) 点对点通信
如果发送的字节数等于接收的字节数,通信将成功。例如,可以发送一个包含两个int的数组,并接收一个long或者一个double。
Pulsar-V
2019/03/12
1.4K0
Spring Boot + Netty + WebSocket 实现消息推送
Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架。
终码一生
2022/10/28
2.1K0
Spring Boot + Netty + WebSocket 实现消息推送
Spring+websocket+quartz实现消息定时推送
简单的说,websocket是真正实现了全双工通信的服务器向客户端推的互联网技术。
Vincent-yuan
2021/12/08
1.2K0
Spring+websocket+quartz实现消息定时推送
Spring boot+VUE+websocket 实现消息推送
        最近涉及消息通知功能,在管理员创建发送消息时,登陆用户可以实时接收到新增消息的提醒,避免频繁刷新,通过websocket取代轮询setInterval。
用户1409099
2019/05/14
6.1K0
Spring Boot 集成 WebSocket,轻松实现信息推送!
在一次项目开发中,使用到了Netty 网络应用框架,以及 MQTT 进行消息数据的收发,这其中需要后台来将获取到的消息主动推送给前端,于是就使用到了MQTT,特此记录一下。
Java技术栈
2021/04/21
1.2K0
socket系列(三)——Spring-socket实时通信、推送
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
逝兮诚
2019/10/30
7290
socket系列(三)——Spring-socket实时通信、推送
Spring Cloud自动推送配置到Consul配置中心
Consul是一个集配置管理、服务注册和发现于一体的微服务基础组件,它提供的这些功能我们在微服务开发中都用到了。在实践中,我们发现Spring Cloud没有提供在启动时自动加载某一个配置文件到Consul配置中心的功能,于是参照Consul社区的一个开源项目cfg4j-pusher进行了二次开发,实现了Spring Boot应用启动时自动加载指定配置文件到Consul配置中心的功能。以下是软件环境:
九州暮云
2019/08/21
1.3K0
Vtcoin继承比特币:点对点交易 系统开发、点对点交易网站搭建
在2010年,一枚比特币的价格不足1美分,到2017年的今天,一枚比特币价格超过一万美元!价格的升值程度令人瞠目结舌!最近的比特币的价格飙升可能是一个泡沫,但是却会更加广泛地得到金融体系的承认,数字货币会逐渐走向主流。 比特币的不断发展也带动其余的虚拟货币的发展,比如Vtcoin。Vtcoin继承比特币的技术和理念,并在此基础上发展创新,是虚拟货币的一个潜力股。 那Vtcoin又是怎么回事呢? Vtcoin也是货币的一种形式,一种电子货币。它和纸币不同,没法实实在在拿在你的手中,也并不是由国家统一制造发行。
企鹅号小编
2018/02/28
8380
Vtcoin继承比特币:点对点交易 系统开发、点对点交易网站搭建

相似问题

TRTC点对点视频通话最大支持多少并发?

0118

小程序点对点通讯能支持吗?

0525

WEBRTC无法进行跨浏览器点对点视频?

085

怎么能点对点批量发布微信信息?

0524

实时音视频如何实现点对点视频呼叫?

1382
相关问答用户
腾讯 | 技术专家擅长2个领域
擅长5个领域
萃橙科技 | 合伙人擅长4个领域
擅长4个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档