3

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

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

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

服务器使用 Ruby 和 em-websocket。

我考虑过的选项:

  • killall -9 $pid_of_tab但这有点粗鲁,内核显然仍然关闭了TCP连接
  • iptables防火墙规则,但这需要 root,并且很难仅删除一个连接(来自本地主机)同时保持其他连接
  • 从另一台机器连接,然后拔下网线或禁用 wifi

最后两个会起作用,但感觉必须有一个更简单的方法。有任何想法吗?

4

2 回答 2

1

我怀疑您可以使用FiddlerWebScarab轻松完成此操作

于 2012-07-16T16:32:23.057 回答
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
于 2012-07-14T12:32:08.043 回答