WebSocket在建立连接时通过@PathParam获取页面传值

简介: WebSocket在建立连接时通过@PathParam获取页面传值

最近在做的两个系统中都用到了webSocket,一个是实时转译系统,该系统就是通过收集端收音,然后实时将录音转换成文字显示到页面上,第二个是智能客服系统。由于之前用webSocket比较少,一直以为在创建连接的时候,不能传递参数,直到有一天看源码的时候,发现了新大陆,下面分享一下


1、在被websocket映射的Java类中的注解如下:


@ServerEndpoint("/websocket/{relationId}/{userCode}")


2、在该Java类中的方法中:

@OnOpen
public void onOpen(@PathParam("relationId") String relationId,
            @PathParam("userCode") int userCode, Session session) 

这样就可以获取第一步中的两个参数的值(relationId和userCode)


3、在客户端调用的时候 url:ws:localhost:8090/websocket/2/1


这样我们就完美解决了,之前我们的解决方式都是,在链接成功以后,双方定义一个报文格式,然后传递初始化参数,相对于这种方式还是非常麻烦的。


4、源码如下:

package javax.websocket;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
 * This method level annotation can be used to decorate a Java method that wishes to be called when a new
 * web socket session is open.
 *
 * <p>The method may only take the following parameters:-
 * <ul>
 * <li>optional {@link Session} parameter</li>
 * <li>optional {@link EndpointConfig} parameter</li>
 * <li>Zero to n String parameters annotated with the {@link javax.websocket.server.PathParam} annotation.</li>
 * </ul>
 *
 * <p>The parameters may appear in any order.
 *
 * @author dannycoward
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface OnOpen {
}
Zero to n String parameters annotated with the {@link javax.websocket.server.PathParam} annotation.</li>
 * </ul>
 *
 * <p>The parameters may appear in any order.
 *
 * @author dannycoward
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface OnOpen {
}


目录
相关文章
|
7月前
|
网络协议 数据安全/隐私保护
百度搜索:蓝易云【WebSocket:从建立连接到关闭的完整流程】
这是WebSocket的基本流程,它提供了一种实时、双向的通信方式,适用于需要实时数据传输的应用场景,如聊天应用、实时游戏等。
203 2
|
1天前
|
移动开发 监控 网络协议
linux如何查看websocket的连接
linux如何查看websocket的连接
|
2天前
ruoyi-nbcio增加websocket与测试页面
ruoyi-nbcio增加websocket与测试页面
|
10天前
|
监控 安全 API
WebSocket通过建立一个持久的连接实现实时双向通信
【5月更文挑战第2天】WebSocket通过建立一个持久的连接实现实时双向通信
24 4
|
2月前
uni-app 62websocket连接权限验证和强制下线
uni-app 62websocket连接权限验证和强制下线
26 3
|
4月前
ModelScope-FunASR的WebSocket连接中断后,服务端不会自动关闭连接
ModelScope-FunASR的WebSocket连接中断后,服务端不会自动关闭连接【1月更文挑战第11天】【1月更文挑战第55篇】
63 2
|
8月前
|
应用服务中间件 nginx
通过nginx访问连接websocket 错误 failed: Error during WebSocket handshake: Unexpected response code: 400
通过nginx访问连接websocket 错误 failed: Error during WebSocket handshake: Unexpected response code: 400
227 0
|
10月前
|
移动开发 缓存 安全
连接世界的纽带:掌握Linux网络设计中的WebSocket服务器
本文探索了在Linux环境下实现WebSocket服务器的网络设计,将WebSocket服务器作为连接世界的纽带,为读者介绍了如何掌握Linux网络设计中的关键技术。文章从实现WebSocket协议到优化服务器性能和稳定性等方面进行了深入讲解。通过学习本文,读者将能够全面了解WebSocket服务器的原理和工作机制,并获得构建高效、可靠的Linux WebSocket服务器的实用技巧和最佳实践。无论是初学者还是有经验的开发人员,都能从本文中获得宝贵的知识和启发,进一步提升在Linux网络设计中的能力。让我们一同打造连接世界的纽带,掌握Linux网络设计中WebSocket服务器的精髓。
145 0
连接世界的纽带:掌握Linux网络设计中的WebSocket服务器
|
10月前
|
IDE 物联网 开发工具
ESP32连接云服务器【WebSocket】
ESP32 芯片基于 ARM Cortex-M 内核,具有 32 位地址空间,支持 Wi-Fi、蓝牙和其他无线连接,以及多种外设接口,如 GPIO、定时器、PWM、串口等。🚂到这里,你可以到文件夹中的bin目录中,可以找到已经存在了activate文件。🎈接着,在宝塔面板的软件商店中导入➡️➡️Python项目管理器⬅️⬅️。🎈首先是本次需要挂在服务器上的脚本代码➡️Server.py⬇️。👨‍💻因此,有关云服务器和宝塔面板的初始配置,这里将直接跳过👋。🗽其中项目路径等内容,可以参照下图填写⬇️。
ESP32连接云服务器【WebSocket】
|
Web App开发 移动开发 前端开发
WebSocket 是什么原理?为什么可以实现持久连接?
额。。最高票答案没答到点子上,最后怎么跑到Nodejs上去了。。Websocket只是协议而已。。 我一个个来回答吧
92 0