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
是一个字符串类型,你可能需要根据实际需求将其转换为适当的类型。文章来源:https://www.toymoban.com/news/detail-752329.html
通过这种方式,你可以方便地接收并处理前端通过WebSocket连接传递的参数。文章来源地址https://www.toymoban.com/news/detail-752329.html
到了这里,关于websocket创建连接时传递参数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!