如何使用 Spark Web Framework 将变量绑定到 websocket 路由路径中?
How to bind variables into websocket route paths using Spark Web Framework?
我正在尝试使用 Spark(java 网络框架)实现一个 websocket 服务器。我使用的是增加了对它的支持的 2.3 版本。
有什么方法可以像 http 路由一样将变量绑定到路由路径中?
例如/聊天/:城市
我想在用户之间创建对话渠道。如果可能的话,我怎样才能让它工作,我怎样才能检索变量?
只需将 ?userId=somekey 添加到您客户端的路径末尾即可。示例是将您的 websocket 路径初始化为 Spark.websocket("/chat") (server-side obvi.) 。然后让您的客户使用 /chat?userId=blah 来点击 URL。从服务器端,您将收到套接字的连接。从那里只需从套接字连接中获取传入的 URI,并使用 String userKey = session.getRemote().getQuery() 方法来提取字段。可能必须执行 user.split("=")[1] 才能获得值
(Whosebug 的回答对我不起作用,但为我指明了正确的方向):
我是这样获取参数的:
@OnWebSocketConnect
void onConnect(Session sockSession) throws Exception {
Map<String, List<String>> params = sockSession.upgradeRequest.parameterMap;
if(params != null && params.containsKey("city")) {
// As the parameter's value is a List, we use 'get(0)'
String city = params.get("city").get(0);
...
}
...
}
我正在尝试使用 Spark(java 网络框架)实现一个 websocket 服务器。我使用的是增加了对它的支持的 2.3 版本。
有什么方法可以像 http 路由一样将变量绑定到路由路径中?
例如/聊天/:城市
我想在用户之间创建对话渠道。如果可能的话,我怎样才能让它工作,我怎样才能检索变量?
只需将 ?userId=somekey 添加到您客户端的路径末尾即可。示例是将您的 websocket 路径初始化为 Spark.websocket("/chat") (server-side obvi.) 。然后让您的客户使用 /chat?userId=blah 来点击 URL。从服务器端,您将收到套接字的连接。从那里只需从套接字连接中获取传入的 URI,并使用 String userKey = session.getRemote().getQuery() 方法来提取字段。可能必须执行 user.split("=")[1] 才能获得值
(Whosebug 的回答对我不起作用,但为我指明了正确的方向):
我是这样获取参数的:
@OnWebSocketConnect
void onConnect(Session sockSession) throws Exception {
Map<String, List<String>> params = sockSession.upgradeRequest.parameterMap;
if(params != null && params.containsKey("city")) {
// As the parameter's value is a List, we use 'get(0)'
String city = params.get("city").get(0);
...
}
...
}