Angular 8 socket.io-client 2.2.0 和 Java netty-socket.io 没有收到消息?

Angular 8 socket.io-client 2.2.0 and Java netty-socket.io message not being received?

我正在使用 netty-socket.io 并且我像演示一样实现了服务器。

我在服务器和客户端都收到 onConnect 事件,但是当我发送消息时 {message: message} 虽然我看到消息正在网络中发送,但我在服务器事件上没有收到任何信息选项卡

  Configuration config = new Configuration();
    config.setHostname("localhost");
    config.setPort(9092);

    final SocketIOServer server = new SocketIOServer(config);
    server.addConnectListener(socketIOClient -> System.out.println("Connection test"));
    server.addEventListener("messageevent", MessageEventObject.class, new DataListener<MessageEventObject>() {
        @Override
        public void onData(SocketIOClient socketIOClient, MessageEventObject messageEventObject, AckRequest ackRequest) throws Exception {
            System.out.println("message received!");
        }
    });
    server.start();

我的MessageEventObjectString message属性、constructorgetterssetters,看起来和客户端一样。

这是我的客户端 websocket 服务:

  export class WebsocketService {

   private socket;
   private subject = new Subject < any > ();

   constructor() {
    console.log('test!');
   }

   public connect(host: string, port: number) {
    this.socket = io(`http://${host}:${port}`, {
     'reconnection': false
    });
    this.socket.on('connect', this.onConnected);
    this.socket.on('connect_error', this.onConnectionFailure);
   }

   public getConnectionStateUpdate(): Observable < any > {
    return this.subject.asObservable();
   }

   public sendMessage(message: string) {
    console.log('test');
    this.socket.emit('messageevent', {
     message: message
    });
   }

   private onConnected = () => {
    this.subject.next({
     connected: true
    });
   }

   private onConnectionFailure = () => {
    this.subject.next({
     connected: false
    });
   }
  }

有没有我做错了什么?

经过大量的调试和打破我的头脑后,我很想回答我自己的问题,我懒得将 Engine IO 与 tomcat 或码头一起使用,并且只想使用不需要的很棒的 netty 包任何 servlet,我试图修复它并弄清楚。

起初我以为是客户端的协议版本,所以我使用了与他们 github page here 上的演示完全相同的客户端,但那没有用,所以问题是服务器端的。

您的对象 (MessageEventObject) 似乎除了您的其他构造函数之外还必须有一个默认的空构造函数,这可能是因为 netty 试图构建一个空对象但它失败了,这导致了您没有的异常没看到。