我创建了@ServerEndpoint
和Decoders
以及Encoders
。
当我使用java.lang.IllegalArgumentException: argument type mismatch
向服务器
session.sendObject(message)
我改变了护目镜,但找不到问题。
这是我的serverEndpoint
@ServerEndpoint(value="/room"
, encoders = MessageEncoder.class
, decoders = MessageDecoder.class)
public class myServerEndpoint
{
@OnMessage
public void onMessage(Message message, Session session)
{
//some code to proccess message
}
}
这是我的MessageDecoder:
public class MessageDecoder implements Decoder.Text<Message>
{
public Message decode(String str) throws DecodeException
{
JsonObject obj = Json
.createReader(new StringReader(str)).readObject();
Message msg = new Message();
msg.setMessage(obj.getString("message"));
msg.setSender(obj.getString("sender"));
msg.setReceivedDate((Date) obj.get("receivedDate"));
return msg;
}
//... and other Methods
}
这是我的Message.class
:
public class Message implements Serializable
{
private String message;
private String sender;
private Date receivedDate;
public Message() {}
//setters and getters
}
这是我的客户代码:
public static void main(String[] args)
{
WebSocketContainer container = ContainerProvider.getWebSocketContainer();
Session session = container
.connectToServer(WSClient.class,
URI.create("ws://localhost:8080/mySocket/room"));
Message msg = new Message();
msg.setMessage("msg");
msg.setSender("me");
msg.setReceivedDate(new Date());
session.getBasicRemote().sendObject(msg);
}
当我尝试将Object发送到服务器并且服务器说java.lang.IllegalArgumentException: argument type mismatch
时出现问题。
什么是问题?
答案 0 :(得分:0)
我终于找到了问题。
willDecode
课程中的MessageTextDecode
函数返回false
而serverEndpoint
代表argument type mismatch
。
如果字符串没有问题,该函数应该返回true
。
public boolean willDecode(String arg0)
{
return true; // in previous my code this returned false
}