Kryonet服务器发送一次消息,但客户端反复接收

时间:2019-04-26 16:34:02

标签: java sockets server client kryonet

我正在使用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);
        }

由于某些原因,即使我只发送一次消息,侦听器也会重复运行。

0 个答案:

没有答案