当前位置: 首页 > 知识库问答 >
问题:

SocketIO客户端在Java,如何实现与netty-socketio服务器的工作?

衡修洁
2023-03-14

在大学的一个实践课程,我必须在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只带来了接口)呢?如果你能给我看生成输出的代码,那就太好了

Client has connected!
Client said: any message you'd like :)

我真的被困在这里,并且已经在玩类似这样的实现https://github.com/socketio/socket.io-client-,但是仍然不知道如何构建客户机并连接到我的服务器。谢谢你的帮助。

费利克斯

共有1个答案

戚鸿福
2023-03-14

你可以用这个

下面是示例代码。

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();
    }
}

您可以为每个事件拥有seprate类。即。

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

listner类是

class MyEventListner implements Listener{
    @Override
    public void call(Object... args) {
        System.out.println("myEvent, msg="+args[0].toString());
    }
}
 类似资料:
  • 这是一个Socket.IO服务器端实现,基于netty框架,适合于 socket.io 0.9-1.0版本(虽然socket.io 目前还处于 0.9版本,会支持到1.0)

  • Netty-socketio 是一个 Java 语言版本的 Socket.IO 服务器的实现,基于 Netty 框架开发。 特性: Supports 0.7...0.9.16 (netty-socketio 1.6.6) and 1.0+ (netty-socketio latest version) version of Socket.IO-client Supports xhr-polling

  • 我将创建一个身份验证服务器,它本身与一组不同的Oauth2.0服务器交互。Netty似乎是在这里实现网络部分的一个很好的候选者。但在开始之前,我需要澄清一些关于netty的细节,因为我是新手。例行程序如下: > < li> 服务器接受来自客户端的HTTPS连接。 然后,不关闭第一个连接,它通过HTTPS与远程OAuth2.0服务器建立另一个连接并获取数据 毕竟,服务器将结果发送回客户端,客户端应该

  • 似乎服务器拒绝了wireshark输出中的tls协商,但我从代码中看不出原因。它是基于工作的代码,只是它被否决了,因此我用新的API更新。代码是开始。需要使用真实的证书。有人知道为什么服务器发送tcp FIN,ack吗? 我有以下服务器代码: 23 16.856111 sonymobi_7f:55:af intelcor_25:1d:fc ARP 42 10.1.10.100在84:c7:ea:7

  • 我需要在netty中有一个客户机/服务器通信,用于我的项目目的之一。所以我刚开始用一个handsOn来改进,我正在学习netty,我是一个初学者。 我尝试了一个简单的客户端服务器与Netty聊天。 客户端和服务器正在初始化,我可以看到服务器能够获得用于建立连接的客户端管道,但是当客户端发送消息时,它没有进入ServerAdapterHandler的messageReceived部分。下面是我的源代

  • 在本节中,我们将构建一个完整的的 Netty客 户端和服务器。虽然你可能集中在写客户端是浏览器的基于 Web 的服务,接下来你将会获得更完整了解 Netty 的 API 是如何实现客户端和服务器的。 Figure 2.1.Echo client / server 图中显示了连接到服务器的多个并发的客户端。在理论上,客户端可以支持的连接数只受限于使用的 JDK 版本中的制约。 echo(回声)客户端