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 {
}


目录
相关文章
|
10月前
|
开发者 UED
ruoyi-nbcio增加websocket与测试页面
ruoyi-nbcio增加websocket与测试页面
207 0
|
网络协议 数据安全/隐私保护
百度搜索:蓝易云【WebSocket:从建立连接到关闭的完整流程】
这是WebSocket的基本流程,它提供了一种实时、双向的通信方式,适用于需要实时数据传输的应用场景,如聊天应用、实时游戏等。
303 2
|
2月前
|
应用服务中间件 网络安全 nginx
配置Nginx以支持Websocket连接的方法。
通过上述配置,Nginx将能够理解WebSocket协议的特殊要求,代理Websocket流量到合适的后端服务器。注意,Websocket并不是HTTP,尽管它最初是通过HTTP请求启动的连接升级,因此保证Nginx了解并能够妥善处理这种升级流程是关键。
478 10
|
10月前
|
监控
|
关系型数据库 Serverless API
Serverless 函数实例问题之websocket连接如何解决
除了控制台,您还可以通过API或CLI使用PolarDB实例的Exec功能。API接口允许执行数据库命令,而阿里云CLI工具如`aliyun polardb`命令可用于管理数据库实例。详情参见[文档](https://help.aliyun.com/document_detail/137999.html)。
129 0
|
监控 安全 API
WebSocket通过建立一个持久的连接实现实时双向通信
【5月更文挑战第2天】WebSocket通过建立一个持久的连接实现实时双向通信
380 4
|
应用服务中间件 网络安全 nginx
处理 WebSocket 连接失败的最佳实践
WebSocket 目前已经成为了一项极为重要的技术,其允许客户端和服务器之间进行实时、全双工的通信。然而,在实际项目中,开发者时常会遇到 WebSocket 连接失败的情况。这不仅影响了用户体验,还可能导致不可预见的系统错误或数据丢失。那么,造成 WebSocket 连接失败的原因有哪些?又该如何解决这些问题呢?本文将逐一分析常见的 WebSocket 连接失败原因,并提供详细的解决方案。
|
移动开发 监控 网络协议
linux如何查看websocket的连接
linux如何查看websocket的连接
1269 0
uni-app 62websocket连接权限验证和强制下线
uni-app 62websocket连接权限验证和强制下线
165 3