Клиент Websocket. Соединение и отправка данных

215
09 мая 2018, 05:27

Есть пример подключения к сокету на javascript.

 self.ws = new WebSocket((window.location.protocol == "http:" ? "ws://" : "wss://") + window.location.host + "/api/get");
    self.ws.onopen = function () {
        if (self.__ws_task)
            clearInterval(self.__ws_task);
        self.ws.send(
            JSON.stringify({
                command: "subscribe",
                data: 'test1:test2',
                data2: '{temp:[32, 31, 41, 51, 55, 54, 61, 91], temp2:[1018433255,805863782,-3330707801]}'
            })
        );
    };

Как сделать тоже самое в Java? И потом еще получать ПОСТОЯННО сообщения в ответ?

Пробовал так:

   final WebsocketClientEndpoint clientEndPoint = new WebsocketClientEndpoint(new URI("ws://temp.com/api/get"));
    clientEndPoint.addMessageHandler(new WebsocketClientEndpoint.MessageHandler() {
        public void handleMessage(String message) {
            System.out.println("message");
            System.out.println(message);
        }
    });

WebsocketClientEndpoint.java

import org.codehaus.jettison.json.JSONObject;
import javax.websocket.*;
import java.net.URI;

@ClientEndpoint
public class WebsocketClientEndpoint {
Session userSession = null;
private MessageHandler messageHandler;
public WebsocketClientEndpoint(URI endpointURI) {
    try {
        WebSocketContainer container = ContainerProvider.getWebSocketContainer();
        container.connectToServer(this, endpointURI);
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}
/**
 * Callback hook for Connection open events.
 *
 * @param userSession the userSession which is opened.
 */
@OnOpen
public void onOpen(Session userSession) {
    System.out.println("opening websocket");
    this.userSession = userSession;
    JSONObject obj = new JSONObject();
    try {
        obj.put("command", "subscribe");
        obj.put("data", "test1:test2");
        obj.put("data2", "{temp:[32, 31, 41, 51, 55, 54, 61, 91], temp2:[1018433255,805863782,-3330707801]}");
        String message = obj.toString();
    } catch (Exception e) {
        e.printStackTrace();
    }
    String message = obj.toString();
    System.out.println(message);
    this.sendMessage(message);
}
/**
 * Callback hook for Connection close events.
 *
 * @param userSession the userSession which is getting closed.
 * @param reason the reason for connection close
 */
@OnClose
public void onClose(Session userSession, CloseReason reason) {
    System.out.println("closing websocket");
    this.userSession = null;
}
/**
 * Callback hook for Message Events. This method will be invoked when a client send a message.
 *
 * @param message The text message
 */
@OnMessage
public void onMessage(String message) {
    if (this.messageHandler != null) {
        this.messageHandler.handleMessage(message);
    }
}
/**
 * register message handler
 *
 * @param msgHandler
 */
public void addMessageHandler(MessageHandler msgHandler) {
    this.messageHandler = msgHandler;
}
/**
 * Send a message.
 *
 * @param message
 */
public void sendMessage(String message) {
    System.out.println("send message");
    this.userSession.getAsyncRemote().sendText(message);
}
/**
 * Message handler.
 *
 * @author Jiji_Sasidharan
 */
public static interface MessageHandler {
    public void handleMessage(String message);
}
}

Получаю такой результат:

opening websocket
{"command":"subscribe","data":"test1:test2","data2":"{temp:[32, 31, 41, 51, 55, 54, 61, 91], temp2:[1018433255,805863782,-3330707801]}"}
send message

Всем заранее спасибо за любой совет!

Answer 1

Для того, чтобы получать сообщения вы должны имплементить

self.ws.onmessage = function(event) {
  //здесь вы можете делать что-нибудь с event
  console.log(event.data);
}
READ ALSO
Отправка эмоджи телеграмм ботом

Отправка эмоджи телеграмм ботом

Пытаюсь в сообщении телеграм-бота отправить эмоджиНо не выходит

236
Tomcat не видит директорию с файлами ресурсов

Tomcat не видит директорию с файлами ресурсов

Всем привет, возникла проблема, я пытаюсь на удаленный сервер выложить свое приложение, но на сервере при чтении из файла Tomcat кидает FileNotFoundException...

391
Что с совместимостью Spring framework 4 и 5

Что с совместимостью Spring framework 4 и 5

Решил программировать на Java (до этого писал немного на Python)Для этого подумываю над изучением Spring и разработкой с его помощью

169