1. ホーム
  2. javascript

[解決済み] Socket.io クライアント: 1つのハンドラですべてのイベントに応答する?

2023-04-14 19:24:14

質問

socket.ioクライアントは、各イベントを個別に指定することなく、すべてのイベントに応答することができますか?

たとえば、次のようなものです(これは明らかに今は動作しません)。

var socket = io.connect("http://myserver");

socket.on("*", function(){
  // listen to any and all events that are emitted from the
  // socket.io back-end server, and handle them here.

  // is this possible? how can i do this?
});

このコールバック関数は、クライアントサイドのsocket.ioのコードで任意の/すべてのイベントが受信されたときに呼び出されるようにしたいです。

これは可能ですか?どのように?

どのように解決するのですか?

socket.ioのライブラリは、これらを辞書に保存しているようです。そのため、ソースを修正しない限り可能とは思えません。

から ソース :

EventEmitter.prototype.on = function (name, fn) {
    if (!this.$events) {
      this.$events = {};
    }

    if (!this.$events[name]) {
      this.$events[name] = fn;
    } else if (io.util.isArray(this.$events[name])) {
      this.$events[name].push(fn);
    } else {
      this.$events[name] = [this.$events[name], fn];
    }

    return this;
  };