Java中的SocketIO客户端,如何实现使用netty-socketio服务器



为了在大学里学习实践课程,我必须用Java编写一个小游戏,使用客户端/服务器基础结构。我需要使用 Websockets 进行通信,而其他学生的解决方案必须与我的解决方案兼容,他们选择了 Netty SocketIO 服务器作为服务器端 (https://github.com/mrniko/netty-socketio/tree/master/src)。我已经知道如何设置服务器:


    Configuration config = new Configuration();
    config.setPort(1234);
    config.setHostname("localhost");
    server = new SocketIOServer(config);
    server.addConnectListener(
        (client) -> {
            System.out.println("Client has Connected!");
    });
    server.addEventListener("MESSAGE", String.class, 
        (client, message, ackRequest) -> {
            System.out.println("Client said: " + message);
    });
    server.start();

现在你能向我解释一下,客户端代码应该是什么样子的,以及我应该使用它的SocketIOClient(Netty只带来接口)的哪个实现?如果您能向我展示将产生输出的代码,那就太好

客户端已连接!客户说:您想:)的任何消息

我真的被困在这里,并且已经在玩像这样的实现 https://github.com/socketio/socket.io-client-java 但仍然无法弄清楚如何构建客户端并连接到我的服务器。感谢您的帮助。

费利克斯

你可以使用这个

下面是示例代码。

public class MySocketClient {
    public static  void main(String args[]) {
        Options options = new Options();
        options.reconnection= true;
        Socket socket = IO.socket("URL of socket.io server");
        //socket.on
        socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
              @Override
              public void call(Object... args) {
                  System.out.println("Connected");
              }
            })
            .on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {
                  @Override
                  public void call(Object... args) {
                      System.out.println("Disonnected");
                  }
            });
        socket.connect();
    }
}

您可以为每个事件设置单独的类。即。

socket.on("myEvent", new MyEventListner())

而李斯特纳类是

class MyEventListner implements Listener{
    @Override
    public void call(Object... args) {
        System.out.println("myEvent, msg="+args[0].toString());
    }
}

最新更新