信頼できないクライアント接続に直面して WebSocket サーバーをテストしようとしています。
終了フレームや TCP FIN ハンドシェイクを送信せずに、いつでもクライアント側で単一の WebSocket 接続を強制的にドロップできるようにしたいと考えています。タブが閉じられると、ブラウザーは各 WebSocket を適切にシャットダウンするため、ブラウザー自体はこれを行うことができません (そうですか?)。同じホスト (他のブラウザー ウィンドウの私) からの他の WebSocket 接続は影響を受けません。
私のシステムは Ubuntu Linux 12.04 です。私のブラウザーは Chrome です (ただし、これをテストするために WebSocket 互換のブラウザーに切り替えることができます)。
サーバーは Ruby と em-websocket を使用しています。
私が検討したオプション:
killall -9 $pid_of_tab
しかし、それは少し失礼です。カーネルはまだ TCP 接続を閉じているようです。iptables
ファイアウォール ルールを使用できますが、これにはルートが必要です。他の接続を維持しながら、(localhost からの) 1 つの接続だけをドロップするのは困難です。- 別のマシンから接続してから、ネットワーク ケーブルを抜くか、wifi を無効にする
最後の 2 つは機能しますが、もっと簡単な方法が必要なようです。何か案は?