Как слушать события с вебсокета в Java?

Рейтинг: 2Ответов: 2Опубликовано: 03.03.2015

Здравствуйте. Не могу осилить такую вот задачу. Есть java-проект, но не web, а standalone. Простое консольное приложение. В нем нужно реализовать клиента, который будет подключаться по известному адресу к вебсокету и постоянно слушать события с него. Гугл в качестве примеров приводит реализации клиентов разными библиотеками, но везде все сводится к тому, что клиент подключается к сокету, отправляет сообщение, получает ответ и закрывается. При этом выставляется таймаут ожидания ответа от сокета. Мне же нужно, чтобы это ожидание было "бесконечным", то есть прослушивание должно идти непрерывно. Подскажите, как это можно реализовать и средствами какой библиотеки? Спасибо

Ответы

▲ 1

вот посмотри https://github.com/TooTallNate/Java-WebSocket можно использовать как для web так и приложениях

▲ 1

На клиенте создаешь сокет(java.net.Socket)

Socket socket = new Socket(ip, port);

С помощью метода getOutputStream() получаешь поток для отправки сообщений на сервер. С помощью метода getInputStream() получаешь поток для получения сообщений от сервера.

Заканчиваешь использование методом close().

Например:

Socket socket = new Socket(ip, port);
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
for (int i = 0; i < 10; i++) {
    oos.writeObject(new String("some string #" + i));
}
socket.close();

На сервере(java.net.ServerSocket):

ServerSocket server = new ServerSocket(port);

Ловишь соединение с помощью метода accept().

Socket socket = server.accept();

Например:

ServerSocket server = new ServerSocket(port);
while (true) {
    Socket socket = server.accept();
    ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
    while (!socket.isClosed()) {
        System.out.println((String) ois.readObject());
    }
}
server.close();