代码之家  ›  专栏  ›  技术社区  ›  Vishnu Viswambharan

在Java中使用Socket IO发送推送通知

  •  0
  • Vishnu Viswambharan  · 技术社区  · 5 年前

    我正在开发一个Spring引导应用程序,通过SocketIO服务器实现与客户机通信。我的目的是在一个特定的函数中从服务器向客户机发送一个推送通知。我如何使之成为可能?我需要在单独的服务类中触发发送事件。

    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
    }
    

    }

    0 回复  |  直到 5 年前
        1
  •  0
  •   Vishnu Viswambharan    5 年前

    我是通过使用socket客户机的uuid来实现的。使用UUID创建了一个套接字客户机,该UUID在将新客户机连接到服务器时保存。在我想要的地方重复使用。

    SocketIOClient client = socketServer.getClient(uuid);