最近想在服務端做個功能,用到了 長輪詢, 不管是用eggjs 、 expressjs, 在開發過程中不斷的會發現一些未處理的異常拋出。
errno: "ECONNRESET"
code: "ECONNRESET"
syscall: "read"
最後發現 原來長連接未偵聽 close 的事件, 流程大概是這樣的
1、用戶建立請求 pending狀態
2、服務端 emit 事件 用於執行特定任務
3、執行完成 或者 時間到了, response 返回信息
如果在 2 和3 的環節之間 用戶 close http請求, 然後這時候 response 就會拋出異常;
ctx.req.on('close', function(){
iscancel = true;
console.log('cancel');
})
if(iscancel){
return;
}
記錄下~~~~~~~~~~~~