1

我正在使用来自此存储库的 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 工作?我看到它有decoderIO.Optionsencoder options in类可能会有所帮助。

4

0 回答 0