什么是强制删除WebSocket连接的最简单方法?

时间:2012-07-14 09:31:50

标签: tcp websocket

我正在尝试在面对不可靠的客户端连接时测试我的WebSocket服务器。

我希望能够在任何时候选择在客户端强制删除单个WebSocket连接,而不发送关闭帧或TCP FIN握手。浏览器本身不能这样做(对吗?)因为它在关闭选项卡时正常关闭每个WebSocket。来自同一主机(我在其他浏览器窗口中)的其他WebSocket连接不应受到影响。

我的系统是Ubuntu Linux 12.04;我的浏览器是Chrome(但我可以切换到任何兼容WebSocket的浏览器来测试它)。

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

我考虑的选项:

  • killall -9 $pid_of_tab但是这有点粗鲁,内核显然仍然关闭TCP连接
  • iptables防火墙规则,但需要root,并且很难删除一个连接(来自localhost),同时保持其他人的活着
  • 从另一台计算机连接,然后拔下网络电缆或禁用wifi

最后两个可行,但感觉必须有一个更简单的方法。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我怀疑您可以使用FiddlerWebScarab

轻松完成此操作

答案 1 :(得分:0)

这是iptables版本(假设套接字在localhost,端口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