关于http中网络不稳定的问题
发布于 10 年前 作者 qianqing 5019 次浏览 最后一次编辑是 8 年前

用nodejs搭建了一个http服务器,前端是手机(2G,3G网络),由于网络不稳定,手机经常会出现断网的情况。 当手机网络关闭时(模拟断网情况),server端并有没有触发requset.on(‘close’),而且response.write和response.end也有发生什么异常,当前手机是没有收到任何response的,请问这种是什么情况?? 有什么办法可以判断response.write和response.end成功与否吗?

4 回复

request.on(‘error’)看是否会触发。

这只是两边socket端口交流,一端关闭端口,另一端继续发送而已。 底层会有ACK返回信号确认,在路上的包是没法停止的,这是由物理路由线路决定的,中间的路由器网关并不知道目的地已经关闭了。 手机断网就断网了,跟服务器有什么关系。

主要是想检测出客户端如果断网了,那么服务端对该次应答做离线处理,下次客户端登上后再发送!如果不知道链路是否有异常的话,就没法做了,你有什么好的思路?

@qianqing 这就跟断点续传一个意思了。用node http太高层,做不了的。用node tcp可以模拟,不过也是比较高层。断点续传一般都是c c++来做了。 用node tcp,可以通过socket的data事件,来侦听,每发送一块data,对方必须返回一个确认值,然后发下一个data。

回到顶部