Я использую клиентскую библиотеку 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`, который может помочь.