Socket.io-client: レイテンシーのピンポンはもう機能しないようです

作成日 2020年11月10日  ·  6コメント  ·  ソース: socketio/socket.io-client

あなたはしたい:

  • [x]バグを報告する
  • []機能をリクエストする

現在の動作

実際に何が起こっているのですか?

サーバーでpingIntervalが有効化/設定されていても、クライアントのPongイベントは発生/トリガーされません

再現手順(現在の動作がバグの場合)

https://github.com/Tiboonn/socket.io-fiddle
上記のフォークでは、socket.ioとsocket.io-clientのバージョンは3.0.0であり、「pong」イベントは機能しません。
packege.jsonの両方のバージョンを2.3.0に変更し、パッケージを再インストールすると、「pong」イベントが機能します

期待される動作

何が期待されますか?

クライアント側で次のコードブロックを使用すると、レイテンシがmsになると予想しています。

socket.on('pong', function (ms) {
    console.log(ms)
})

設定

  • OS:Ubuntu 20.04
  • ブラウザ:Firefox / Chrome(複数テスト済み)
  • socket.ioバージョン:3.0.0

その他の情報(例:スタックトレース、関連する問題、修正方法の提案)

Needs documentation

最も参考になるコメント

やあ! あなたは絶対に正しいです、これは移行ガイドに含まれるべきです。

次の方法で動作を再現できるはずです。

// server-side
io.on("connection", (socket) => {
  socket.on("ping", (cb) => {
    if (typeof cb === "function")
      cb();
  });
});

// client-side
setInterval(() => {
  const start = Date.now();

  socket.volatile.emit("ping", () => {
    const latency = Date.now() - start;
    // ...
  });
}, 5000);

全てのコメント6件

v3のドキュメントを読んだ後、 pongイベントが削除されていることに気付きましたが、変更を壊す際に言及されていません。

現在、回避策はありますか?

また、これは次のコミットで言及されています:

https://github.com/socketio/socket.io-client/commit/be8c3141bdbbdfa59c4d0ca4b3149236e200878f

この機能はengine.ioのために削除されたようです...

@hadimostafapour良い発見!!! :)
私はあなたが言及したコミットからコードを取り、それを自分で実装すると思います:D

やあ! あなたは絶対に正しいです、これは移行ガイドに含まれるべきです。

次の方法で動作を再現できるはずです。

// server-side
io.on("connection", (socket) => {
  socket.on("ping", (cb) => {
    if (typeof cb === "function")
      cb();
  });
});

// client-side
setInterval(() => {
  const start = Date.now();

  socket.volatile.emit("ping", () => {
    const latency = Date.now() - start;
    // ...
  });
}, 5000);

@darrachequesneコードスニペットをありがとう!!

ここに追加: https ://socket.io/docs/v3/migrating-from-2-x-to-3-0/#No -more-%E2%80%9Cpong%E2%80%9D-event-for -取得-レイテンシ

フィードバックをありがとう:+1:

このページは役に立ちましたか?
0 / 5 - 0 評価