Сервер Kryonet отправляет сообщение один раз, а Клиент получает повторно - PullRequest
0 голосов
/ 26 апреля 2019

Я использую 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);
        }

Для некоторыхпричина, слушатель неоднократно запускается, хотя я отправляю сообщение только один раз.

...