終於解決socket 10053問題

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

相關文章
相關標籤/搜索