実際に何が起こっているのですか?
サーバーで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)
})
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:
最も参考になるコメント
やあ! あなたは絶対に正しいです、これは移行ガイドに含まれるべきです。
次の方法で動作を再現できるはずです。