这种情况是onMessage方法传递的参数不合适
- 一个String,一个整数,报错
@OnMessage
public void onMessage(String msg,int a) { }
报错:Multiple message parameters present on the method [onMessage]
- 一个整数,正常启动
@OnMessage
public void onMessage(int a) { }
- 一个String,一个Session
@OnMessage
public void onMessage(String msg,Session session) { }
注意这里只有传递Session,才可以从onopen哪里保存的session中取值
eg:
//定义一个全局变量
private String userName = "";
private Session session;
onOpen方法中,给userName赋值之后
@OnOpen
public void onOpen(@PathParam("nickname")String nickname,Session session) throws IOException{
this.userName = nickname;
this.session=session;
webSocketSet.add(this);
}
onMessage方法中如果要使用这个userName则必须把Session,作为参数传递,不然取不到值,userName一直为空
@OnMessage
public void onMessage(String msg,Session session) {
User uservo = new User();
uservo.setLoginName(this.userName);
}
只是作为自己的一个开发记录,因为业务需要额外参数,当时修改了onMessage方法的入参一直报错!