1

ユーザーがルームに参加してチャットを開始できるようにする次のコードがあります。

server.on('connect', function(data) {
  nickname = prompt('What is your name?');
  server.emit('join', {name : nickname, room : $('#roomid').val()});
  $('#events').append('<li>Welcome, ' + nickname + '!</li>');
});

しかし、私が懸念していたことの 1 つは、ユーザーが何百ものユーザー名で「参加」を発し、チャット ルームをスパムするのを妨げているのは何ですか? 私はリアルタイム プログラミングにまったく慣れていないので、この種の動作を防ぐためにどのような手法を使用できるか疑問に思っています。

4

1 に答える 1

1

ユーザーがデフォルトでこれを行うのを止めることは、実際には何もありません。この種のことを処理するには、サーバー側のセキュリティを組み込む必要があります。良い例は IRC です。一部のサーバーには、スパム行為を行うユーザーを制限または切断するシステムが設定されています。サーバー側での追加ロジックについては、次のオプションを検討してください。

  1. ユーザーが一定期間内に一定数以上のイベントを発行する場合、そのユーザーを制限します (つまり、送信するイベントが無視されるようにします)。彼らが頻繁に、または特に過度に行う場合は、切断/ブラックリストに登録してください。
  2. 許可されていない状態で発行されたイベントを無視します。たとえば、接続されたソケットのユーザー名をどこか (つまりを使用socket.set) で追跡し、別のイベントが送信されたjoin場合は破棄します。
于 2012-07-16T16:26:28.193 に答える