輪詢不得不考慮的異常 close 事件偵聽

最近想在服務端做個功能,用到了 長輪詢, 不管是用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;
}

記錄下~~~~~~~~~~~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章