websocket创建连接时传递参数

这篇具有很好参考价值的文章主要介绍了websocket创建连接时传递参数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 当前端使用new WebSocket("ws://localhost:8088/websocket?userid=1")来连接后端时,后端Spring Boot可以通过ServerEndpoint注解来接收参数。

首先,确保你的Spring Boot项目已经添加了WebSocket依赖,并且已经启用了WebSocket支持。然后,你可以创建一个WebSocket的服务器端点,使用@OnOpen注解标注用户连接建立时的方法。在该方法中,你可以通过Session对象来获取连接参数。

下面是一个示例代码,演示如何在Spring Boot后端接收WebSocket连接参数:

import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;

@ServerEndpoint("/websocket")
public class MyWebSocketHandler {

    @OnOpen
    public void handleOpen(Session session) {
        // 获取URL中的参数
        Map<String, List<String>> params = session.getRequestParameterMap();
        List<String> userIds = params.get("userid");

        if (!userIds.isEmpty()) {
            // 取出userid参数的值
            String userid = userIds.get(0);
            System.out.println("Received userid parameter: " + userid);
            
            // 在这里可以根据接收到的userid参数执行相应的逻辑
        }
    }

    @OnMessage
    public void handleMessage(String message, Session session) {
        // 处理接收到的WebSocket消息
        System.out.println("Received message: " + message);
    }

    @OnError
    public void handleError(Session session, Throwable throwable) {
        System.err.println("WebSocket Error: " + throwable.getMessage());
    }
}

在上述示例中,我们创建了一个名为MyWebSocketHandler的类,并使用@ServerEndpoint("/websocket")注解标注了这个类作为WebSocket的服务器端点。handleOpen方法使用@OnOpen注解标注,表示在用户连接建立时会调用该方法。在该方法中,我们通过session.getRequestParameterMap()来获取URL中的参数,并从参数中获取userid的值。这里假设userid参数只有一个值,因此我们使用userIds.get(0)来获取该值。你可以根据实际情况进行适当的处理。

注意,上述代码仅为示例,你可能需要根据自己的实际需求进行适当的调整和处理。同时,确保在Spring Boot项目中正确配置和启用WebSocket支持,以便能够成功接收和处理WebSocket连接。

2.如果前端使用socket = new WebSocket("ws://localhost:8088/websocket/" + userid)的方式连接WebSocket,其中userid是动态参数,后端Spring Boot可以通过解析WebSocket的URI来获取该参数。

下面是一个示例代码,演示如何在Spring Boot后端接收这种形式的参数:

import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;

@ServerEndpoint("/websocket/{userid}")
public class MyWebSocketHandler {

    @OnOpen
    public void handleOpen(@PathParam("userid") String userid, Session session) {
        System.out.println("Received userid parameter: " + userid);
        // 在这里根据接收到的userid参数执行相应的逻辑
    }

    // 其他WebSocket事件处理方法...
}

在这个示例中,我们使用@ServerEndpoint("/websocket/{userid}")注解标注了MyWebSocketHandler类,其中{userid}是URI模板中的动态部分。然后,在handleOpen方法中,我们使用@PathParam("userid")注解来声明一个名为userid的路径参数,并将其值绑定到方法的参数上。当WebSocket连接建立时,Spring会自动解析URI,提取路径参数的值,并将其传递给handleOpen方法。

因此,在handleOpen方法中,你可以直接使用userid参数的值。你可以根据这个值执行相应的逻辑操作,比如根据用户ID进行身份验证、查找用户信息等。需要注意的是,这里的userid是一个字符串类型,你可能需要根据实际需求将其转换为适当的类型。

通过这种方式,你可以方便地接收并处理前端通过WebSocket连接传递的参数。文章来源地址https://www.toymoban.com/news/detail-752329.html

到了这里,关于websocket创建连接时传递参数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • API 接口主流协议有哪些?如何创建 HTTP/HTTP、WebSocket/WebSockets、TCP/UDP、gRPC、SOAP、Dubbo/HSF 等不同协议?

    API 接口协议繁多,不同的协议有着不同的使用场景。70% 互联网应用开发者日常仅会接触到最通用的 HTTP 协议,相信大家希望了解更多其他协议的信息。我们今天会给大家介绍各种 API 接口主流协议和他们之间的关系。 接口协议分成两类: 传输层协议和应用层协议。 传输层协

    2023年04月21日
    浏览(82)
  • WebSocket 网络协议(实时更新 )

    WebSocket 是一种在客户端和服务器之间建立双向通信信道的网络协议。它在客户端和服务器之间建立一个持久的、全双工的连接,允许数据在两个方向上实时传输,而不需要像HTTP一样进行多次请求和响应。  WebSocket 的主要优势是减少了服务器和客户端之间的通信延迟,因为数

    2024年01月17日
    浏览(38)
  • 【spring(六)】WebSocket网络传输协议

    🌈键盘敲烂,年薪30万🌈 目录 核心概要: 概念介绍: 对比HTTP协议:⭐ WebSocket入门案例:⭐ websocket对比http         WebSocket是Web服务器的一个组件,WebSocket是一种基于TCP的新的 网络传输协议 ,它实现了浏览器与服务器全双工通信——浏览器只需要完成 一次握手 ,两者之

    2024年02月05日
    浏览(33)
  • WebSocket | 基于TCP的全双工通信网络协议

    ​🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法,初步涉猎Python人工智能开发和前端开发。 🦅主页:@逐梦苍穹 📕所属专栏:Java EE ✈ 您的一键三连,是我创作的最大动力🌹 WebSocket 是基于 TCP 的一

    2024年02月19日
    浏览(60)
  • 持久双向通信网络协议-WebSocket-入门案例实现demo

    1 介绍 WebSocket 是基于 TCP 的一种新的 网络协议 。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建 持久性 的连接, 并进行 双向 数据传输。 HTTP协议和WebSocket协议对比: HTTP是 短连接 (一次响应完即消除) WebSocket是 长连接

    2024年01月16日
    浏览(32)
  • 网络通信协议-HTTP、WebSocket、MQTT的比较与应用

    在今天的数字化世界中,各种通信协议起着关键的作用,以确保信息的传递和交换。HTTP、WebSocket 和 MQTT 是三种常用的网络通信协议,它们各自适用于不同的应用场景。本文将比较这三种协议,并探讨它们的主要应用领域。 HTTP (超文本传输协议) HTTP  是最常见的协议之一

    2024年02月05日
    浏览(44)
  • 【路由协议】使用按需路由协议和数据包注入的即时网络模拟传递率(PDR)、总消耗能量和节点消耗能量以及延迟研究(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 使用按

    2024年02月12日
    浏览(25)
  • 前端面试:【网络协议与性能优化】HTTP/HTTPS、TCP/IP和WebSocket

    嗨,亲爱的Web开发者!在构建现代Web应用时,了解网络协议是优化性能和确保安全性的关键。本文将深入探讨HTTP/HTTPS、TCP/IP和WebSocket这三个网络协议,帮助你理解它们的作用以及如何优化Web应用的性能。 1. HTTP/HTTPS协议: HTTP(超文本传输协议): HTTP是用于在Web上传输数据的

    2024年02月11日
    浏览(38)
  • 【网络协议】远程登录安全连接协议SSH(Secure Shell)

    SSH(Secure Shell)协议是一种用于在不安全网络上提供安全远程登录、命令执行和数据传输的加密网络协议,通过公钥加密和身份验证技术确保通信的安全性和隐私性。 SSH(Secure Shell)最初由Tatu Ylönen在1995年开发,现在已经发展成为一种广泛使用的标准工具,尤其是在Unix和

    2024年02月03日
    浏览(48)
  • Websocket传递JWT令牌

    在访问带有[Authorize]的方法的时候,需要前端通过自定义报文头的形式将JWT令牌传递给后端进行验证,否则是不能访问带有[Authorize]的方法。 [Authorize]是用于限制对web应用程序中某些操作或控制器的访问。当[授权]属性应用于操作或控制器时,它表示用户必须经过身份验证和授

    2024年02月08日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包