后台获取参数4中方法:
websocket的url
“ws:localhost:82/chat/123?username=ydh”;
socket的注释
@ServerEndpoint("/chat/{param}")
socket的open方法
@OnOpen
public void open(Session session, @PathParam(“param”)String param) {undefined
System.out.println(“用户”+param+" 登录");
Map map = session.getPathParameters();
System.out.println(“session.getPathParameters()”+map.toString());
String str = session.getQueryString();
System.out.println(“session.getQueryString()”+str);
String uri = session.getRequestURI().toString();
System.out.println(“session.getRequestURI().toString()”+uri);
}
结果
用户123 登录
session.getPathParameters(){param=123}
session.getQueryString()username=baidu
session.getRequestURI().toString()/chat/123?username=baidu
1、url站位,通过@PathParam注释获取
2、url站位,通过session.getPathParameters()获取
3、url传参,通过session.getQueryString()
4、url传参,通过session.getRequestURI().toString()
从结果可以看出1、2两个方法不需要截取,可以直接使用;而3、4两个方法都需要截取字符串,稍微麻烦,但是请求的url比较清爽。
下面的是完整代码
config代码
import javax.websocket.Endpoint; import javax.websocket.server.ServerApplicationConfig; import javax.websocket.server.ServerEndpointConfig; import java.util.Set; public class ChatConfig implements ServerApplicationConfig { // 注解 @Override public Set> getAnnotatedEndpointClasses(Set> scanned) { System.out.println(“websocket…启动!”+scanned.size()); return scanned; } // 接口 @Override public Set getEndpointConfigs(Set> scanned) { return null; } }
socket代码
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.Map;
/** * @description: * @author: yangdehong * @version: 2017/6/4. */
@ServerEndpoint("/chat/{param}")
public class ChatSocket {undefined
@OnOpen
public void open(Session session, @PathParam(“param”)String param) {undefined
System.out.println(“用户”+param+" 登录");
Map map = session.getPathParameters();
System.out.println(“session.getPathParameters()”+map.toString());
String str = session.getQueryString();
System.out.println(“session.getQueryString()”+str);
String uri = session.getRequestURI().toString();
System.out.println(“session.getRequestURI().toString()”+uri);
}
@OnClose
public void close(Session session){undefined