Как заставить клиента Java Socket.IO декодировать / кодировать двоичный файл, а не JSON?
Я использую клиентскую библиотеку 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`, который может помочь.