@ServerEndpoint
및 Decoders
및 Encoders
을 만듭니다. 내가 서버인수 유형 불일치 @onmessage
나는 이리저리 굴리는 달라질 수 있지만, 문제를 찾을 수 없습니다에 session.sendObject(message)
를 사용하여 객체를 보낸다 때 java.lang.IllegalArgumentException: argument type mismatch
:
서버
나에게 오류가 발생합니다. 이 내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);
}
서버 및 서버에 객체를 보내려고 할 때 문제가 발생했습니다. java.lang.IllegalArgumentException: argument type mismatch
이라고 말합니다.
무엇이 문제입니까?