How to simulate hard disconnection for websocket

虽然 Chrome/Firefox 在开发者工具中提供了离线模式,但是这个功能无法中断已经跟服务端建立起来的 WebSocket 连接。

如果你跟我一样使用 Linux 系统,那么就可以借助 iptables 命令来模拟连接中断的情况:

# 中断所有访问 localhost:3001 的连接
sudo iptables -I INPUT 1 -p tcp -i lo --dport 3001 -j DROP

# 恢复连接
sudo iptables -D INPUT -p tcp -i lo --dport 3001 -j DROP

如果你发现上面的命令不生效,那么可能是因为你的浏览器在通过 IPv6 地址访问本地端口,你需要将 iptables 替换成 ip6tables

如果你是基于 iptables 实现的 ufw 用户,你会发现 ufw 中建立的本地端口规则完全不生效,这是因为 ufw 不会处理任何从本机访问本机的连接,我们只能手动调用更底层的 iptables

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注