asp.net 可以通过 Response.IsClientConnected() 函数来“测试”客户端是否在线。其它设计也是类似。
但是一般来说,如果你处理大型系统,你的协议应该是围绕着“极端的事物”而设计的。例如传送1G大的文件,可能不用10毫秒就结束了(只需要比较一下MD5),可能不用10秒钟钟就结束了(仅仅传送部分修改过的磁盘块),也可能用很长时间才能传送完毕。但是总之它在逻辑协议中是离散和并发的,而不是持续和顺序的。
当你的逻辑设计就是 hang 住服务器的时候,你可能考虑的所谓“优化”仍然是这个思路,而没有从离散、异步的角度去设计。这就好像是有些人总是纠结与个别语句用什么编程语言的“优化”而不知道从逻辑上去优化算法,这总归是放到小伎俩中去研究的。
因为通常架构师都是通过改变逻辑算法,将通讯改为并发、离散形式,来优化系统。而并不是纠结于个别语句。