2012-07-14 140 views
3

我試圖測試我的WebSocket服務器面對不可靠的客戶端連接。強制刪除WebSocket連接最簡單的方法是什麼?

我希望能夠在任何時候選擇在客戶端強制刪除單個WebSocket連接,而不發送關閉幀或TCP FIN握手。瀏覽器本身無法執行此操作(對嗎?),因爲它在關閉標籤頁時正常關閉每個WebSocket。來自同一主機的其他WebSocket連接(我在其他瀏覽器窗口中)不應受到影響。

我的系統是Ubuntu Linux 12.04;我的瀏覽器是Chrome(但我可以切換到任何兼容WebSocket的瀏覽器來測試)。

服務器正在使用Ruby和em-websocket。

選項,我認爲:

  • killall -9 $pid_of_tab但是這是一個有點粗魯,內核顯然還是關閉TCP連接
  • iptables防火牆規則,但需要root,這是很難只是一個下降連接(從本地主機),同時保持其他活着
  • 從另一臺機器連接,然後拔出網絡電纜或禁用所述WiFi

最後兩個會起作用,但感覺好像有一個更簡單的方法。有任何想法嗎?

回答

0

這裏的iptables版本(假設插座送達本地主機,端口3000):

要添加丟棄所有通信的規則。

$ sudo iptables -A INPUT -i lo -p tcp --dport 3000 -j DROP 

要刪除再次證明規則:

$ sudo iptables -D INPUT -i lo -p tcp --dport 3000 -j DROP 
1

我懷疑你可以很容易地用FiddlerWebScarab

+0

有趣的想法,我沒有考慮到這一點。我最終使用了iptables hack,但如果我需要再次執行此操作,我會給WebScarab一個嘗試。 – Thomas 2012-07-16 17:14:46

相關問題