簡體   English   中英

未收到 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();

我的MessageEventObject具有String message屬性、 constructor getterssetters ,看起來與客戶端相同。

這是我的 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 或 jetty 一起使用,並且只想使用那個不需要任何 servlet 的很棒的 netty 包,我試圖修復它並弄清楚。

起初我以為這是客戶端的協議版本,所以我使用了與演示在他們的github 頁面上顯示的完全相同的客戶端,但這不起作用,所以問題是服務器端的。

除了其他構造函數之外,您的對象( MessageEventObject )似乎還必須有一個默認的空構造函數,這可能是因為 netty 嘗試構建一個空對象並且它失敗了,這會導致您看不到的異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM