Отправка push-уведомления с использованием Socket IO в java

Я разрабатываю приложение весенней загрузки с реализацией сервера сокетов io для связи с клиентом. Мое намерение состоит в том, чтобы отправить одно push-уведомление с сервера клиенту в определенной функции. Как мне сделать это возможным. Мне нужно инициировать событие отправки в отдельном классе обслуживания.

Класс реализации Socket IO

@Configuration
public class Socket {
    @Value("${socket.io.ip}")
    private String hostIP;

    @Value("${socket.io.port}")
    private int hostPort;

    @Bean
    public void setupSocketServer() {
        Configuration config = new Configuration();
        config.setHostname(hostIP);
        config.setPort(hostPort);
        SocketIOServer socketServer = new SocketIOServer(config);
        socketServer.addEventListener("chat", ChatObject.class, new DataListener<ChatObject>() {
            @Override
            public void onData(final SocketIOClient client, ChatObject data, final AckRequest ackRequest) {

                // check is ack requested by client,
                // but it's not required check
                if (ackRequest.isAckRequested()) {
                    // send ack response with data to client
                    ackRequest.sendAckData("client message was delivered to server!", "yeah!");
                }


                // send message back to client with ack callback WITH data
                ChatObject ackChatObjectData = new ChatObject(data.getUserName(), "message with ack data");
                client.sendEvent("chatResponse1", new AckCallback<String>(String.class) {
                    @Override
                    public void onSuccess(String result) {
                        System.out.println("ack from client: " + client.getSessionId() + " data: " + result);
                    }
                }, ackChatObjectData);
            }
        });

        socketServer.start();
    }
}

Класс обслуживания

class userService{
 void sendnotification(msg){
 // need to  call sendEvent function here
}

}

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
1 023
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я достиг этого, используя UUID клиента сокета. Создан сокет-клиент с использованием UUID, который сохраняется при подключении нового клиента к серверу. И повторно использовал его везде, где хотел.

SocketIOClient client = socketServer.getClient(uuid);

Другие вопросы по теме