【问题标题】:netty-socketio read socket.io data?netty-socketio 读取 socket.io 数据?
【发布时间】:2018-08-22 15:10:07
【问题描述】:

我正在使用以下项目构建socket.io服务器:https://github.com/mrniko/netty-socketio

我的服务器:

public class ServerTest {
    public static void main(String... args) {
        Configuration config = new Configuration();
        config.setPort(8080);

        config.setAuthorizationListener(new AuthorizationListener() {
            public boolean isAuthorized(HandshakeData handshakeData) {
                System.out.println("yes!" + handshakeData.getAddress());
                return true;
            }
        });
        final SocketIOServer server = new SocketIOServer(config);

        server.addEventListener("message", String.class, new DataListener<String>() {

            public void onData(SocketIOClient socketIOClient, String s, AckRequest ackRequest) throws Exception {
                System.out.println("hey");
            }
        });

        server.start();
    }
}

我接受所有连接,我已经使用 socket.io javascript 客户端测试了这样的连接:

var ws = io.connect('localhost:8080');
ws.on('connect', function() {
    ws.emit('message', "I am a message!");
});

现在,我得到了打印“嘿”,但如果我发送这样的数据对象会怎样:

ws.emit('message', {data: "I am a message!"});

如何解码此消息?有没有办法调试发送到服务器的对象类型?

【问题讨论】:

    标签: java socket.io netty


    【解决方案1】:

    您正在从客户端向服务器发送Object。在服务器上,您需要创建一个对象,该对象具有一个名为data 的字符串字段。 见下面demo class,基本上现在可以用类似代码
    server.addEventListener("ackevent1", ChatObject.class, new DataListener<ChatObject>() { @Override public void onData(final SocketIOClient client, ChatObject data, final AckRequest ackRequest) { ...

    在服务器上接收对象了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-26
      • 2014-04-12
      • 2021-01-19
      • 2013-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多