socket 10053问题表现为后台服务器抛出异常,说前端主动断开,那么缘由是什么?这个问题已经困扰我好长时间,终于今天找到缘由了。(若是只想看结果,能够跳过下面若干段落)html
开始我觉得服务器可能会有某些bug,因而查到python 2.7有一个 问题和patch,可是这个只解决了问题的显示,并不能真正解决问题。前端
在chrome中你会看到请求被cancel掉,可是没有任何的人为操做,为何会被cancel掉呢?在stackoverflow上找到 一篇文章 这里讲述了如何查看chrome的event。根据指引,我学会了如何看event,发现的确是chrome断开的,可是为何呢,仍是没法知道。python
忽然之间不知是由于什么,我看到了jquery调用时能够传递timeout参数,我忽然想到,会不会是它形成的。打开我那个出错页面,在console中输入: $.ajaxSettings,结果我看到了里面的确有timeout:500的信息。我说什么在event中看到了,当执行到500毫秒时会主动取消,同时会向服务器发出断开的消息呢,原来都是这个timeout害的。jquery
知道了缘由,因而查找哪里调用。终于在plugs中的一个jqmultipleselect插件中发现,它使用了一个叫localisation的插件,用来动态从后台装载js的翻译文件。就是在这里,它调用了$.ajaxSetup来设置超时时间为500。它原来的代码是保存了原始的timeout值,在处理以后又改回去,可是由于全局的timeout在开始是undefined的状态,因此在恢复时没法再恢复成原来的状态(即未定义的状态)。我找到 localisation 的网站,发现它已经升级到了1.1.0,个人是1.0.4。因而我下载了新的代码,它已经进行了调整,再也不使用$.ajaxSetup来处理,而是在调用$.ajax时进行处理,因此这个问题在升级到新版本后终于被解决了。ajax
因此,之后若是有相似10053的问题,不妨考虑一下是否是jquery的设置上有问题。固然10053并不全是由于jquery引发的。chrome