强制关闭WebSocket连接的最简单方法是什么?

3
我正在尝试在不稳定的客户端连接下测试我的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个回答

1

有趣的想法,我之前没有考虑过。最后我用了iptables的hack方法,但如果我再需要这样做,我会试试WebScarab。 - Thomas

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接