我已經在node.js中編寫了一個服務器應用程序,它使用socket.io和RS232無線設備從某些硬件接收入站錯誤消息。Node.js如何檢查某些代碼是否在服務器應用程序中被阻止
我的服務器在過去的2個月裏一直收到完美的錯誤消息,但在過去的2天中,服務器已被隨機鎖定,並且不會響應任何入站消息,直到終端中按下Ctrl + C
。我通常會期望這會關閉服務器,但是當服務器阻塞時,Ctrl + C
已經解除了事件循環的阻塞,然後處理了在事件循環被阻塞時似乎排隊的入站消息(這只是一個理論)。
我相信我的理論是正確的,因爲控制檯將掛起一條消息,如waiting for data...
,然後按Ctrl + C
稍後將批處理15個請求,將數據推送到我的後端。
最初我無法在代碼中發現任何問題,而且由於應用程序運行2個月沒有問題,我感到更加困惑。我的問題在於,是否有任何易於使用的分析工具來查看我的服務器應用程序正在凍結的位置?
您是否優雅地處理'if else'語句或'try catch'塊的錯誤?也許設備在某個時候發送了一個不尋常的響應,並且您的腳本沒有考慮到這種情況,這可能會導致錯誤/阻止。 – Brett84c
@ Brett84c我在我的'socket.on('data',...'方法中使用了一個詳盡的if/else列表,但我沒有使用try/catch,但是當數據進來時,我會記錄這些數據在緩衝區中,當服務器鎖定時,沒有緩衝區被打印,但是按下Ctrl C它會有。 – Alex
嗯,這很奇怪,希望我可以提供更多的幫助,但是我最好在Node中間,並且從不直接與Socket.io(內置於流星)當所有其他都失敗時,console.log所有內容,heh。 – Brett84c