socket.ioライブラリで送信されたメッセージがクライアントに受信されたことを確認する方法。socket.io に特別な方法はありますか?
回答ありがとうございます。
socket.ioライブラリで送信されたメッセージがクライアントに受信されたことを確認する方法。socket.io に特別な方法はありますか?
回答ありがとうございます。
イベントハンドラーを定義するときは、コールバックパラメーターを使用する必要があります。
一般的な実装は次のとおりです。
クライアント側
var socket = io.connect('http://localhost');
socket.emit('set', 'is_it_ok', function (response) {
console.log(response);
});
サーバ側
io.sockets.on('connection', function (socket) {
socket.on('set', function (status, callback) {
console.log(status);
callback('ok');
});
});
次に、サーバー側のコンソールを確認します。'is_it_ok'が表示されます。次に、クライアント側のコンソールを確認します。'ok'と表示されます。それが確認メッセージです。
socket.io接続は基本的に永続的です。次の組み込み関数を使用すると、接続の状態に基づいてアクションを実行できます。
socket.on('disconnect', function() {} ); // wait for reconnect
socket.on('reconnect', function() {} ); // connection restored
socket.on('reconnecting', function(nextRetry) {} ); //trying to reconnect
socket.on('reconnect_failed', function() { console.log("Reconnect failed"); });
上記のコールバックオプションの使用は、事実上、次の2つの手順を組み合わせたものです。
socket.emit('callback', 'ok') // happens immediately
そしてクライアント側で
socket.on('callback', function(data) {
console.log(data);
});
したがって、タイマーを使用する必要はありません。接続に次の状態のいずれかがある場合を除いて、コールバックはすぐに実行されます-'disconnect'、'reconnecting'、'reconnect_failed'。
.send()
またはメソッド呼び出しの最後のパラメーターとして関数を追加する.emit()
と、相手がメッセージを受信したときにこの関数が呼び出されます。
socket.send('hi', function() {
// if we are here, our salutation has been received by the other party.
});