我正在使用Kryonet将客户端应用程序连接到服务器应用程序。服务器应用程序具有一个Dish对象列表,在添加新对象时应将其发送到客户端。这(似乎)正确地工作,因为从服务器正确地向客户端发送消息的方法仅被调用一次。但是,在客户端,侦听器中的receive()方法反复调用setDishes方法,并且客户端中的菜式内容在旧ArrayList和新Arraylist之间振荡。
这是侦听器的代码。
kryonetClient.addListener(new Listener() {
public void received (Connection connection, Object object) {
if (object instanceof List) {
if (((ArrayList) object).size() > 0){
ArrayList recievedList = (ArrayList) object;
if (recievedList.get(0) instanceof Dish){
client.setDishes(recievedList);
}
}
}
}
});
这是从服务器向客户端发送消息的代码。
public void sendMessageToAll(List<Dish> dishes){
System.out.println(dishes);
System.out.println("SENDING DISHES");
if (kryonetServer.getConnections() != null && dishes != null){
kryonetServer.sendToAllTCP(dishes);
}
由于某些原因,即使我只发送一次消息,侦听器也会重复运行。