面对不可靠的客户端连接,我正在尝试测试我的 WebSocket 服务器。
我希望能够在我选择的任何时候在客户端强制删除单个 WebSocket 连接,而无需发送关闭帧或 TCP FIN 握手。浏览器本身不能这样做(对吗?),因为它会在关闭选项卡时优雅地关闭每个 WebSocket。来自同一主机的其他 WebSocket 连接(我在其他浏览器窗口中)不应该受到影响。
我的系统是 Ubuntu Linux 12.04;我的浏览器是 Chrome(但我可以切换到任何与 WebSocket 兼容的浏览器来测试它)。
服务器使用 Ruby 和 em-websocket。
我考虑过的选项:
killall -9 $pid_of_tab
但这有点粗鲁,内核显然仍然关闭了TCP连接iptables
防火墙规则,但这需要 root,并且很难仅删除一个连接(来自本地主机)同时保持其他连接- 从另一台机器连接,然后拔下网线或禁用 wifi
最后两个会起作用,但感觉必须有一个更简单的方法。有任何想法吗?