Как заставить клиента Java Socket.IO декодировать / кодировать двоичный файл, а не JSON? - PullRequest
0 голосов
/ 01 января 2019

Я использую клиентскую библиотеку Socket.IO из этого репозитория: io.socket:socket.io-client:1.0.0 и серверную библиотеку из этого com.corundumstudio.socketio:netty-socketio:1.7.12.

Я излучаю простой объект данных между клиентом и сервером.Сервер работает в двоичном режиме и запускает прослушиватель событий только в том случае, если с этим событием поступают двоичные данные:

socketServer.addEventListener("event", ResponseData.class, new DataListener<ResponseData>() {
        @Override
        public void onData(SocketIOClient client, ResponseData data, AckRequest ackSender) throws Exception {
            // data is a binary
        }
    });

Однако клиент работает в формате json, а не в двоичном формате.Это дает полученные данные в формате JSON, но я могу преобразовать их в объект.Проблема в том, что когда я генерирую объект, он преобразует его в json, поэтому сервер не вызывает для него прослушиватель событий.

socket.on("event", new Emitter.Listener() {
            @Override
            public void call(Object... args)
            {
                // args[0] is a JSONObject not binary!
                clientSocket.emit("event", new ResponseData("var")); // gets converted into JSONObject

            }
        });

Как я могу заставить клиентскую библиотеку работать в двоичном, а не в json?Я вижу, что у него есть класс decoder, encoder options in IO.Options`, который может помочь.

...