我正在使用NodeJS來運行套接字服務器(使用socket.io)。當客戶端連接時,我想要打開並運行一個模塊,它會執行一些操作。即使我儘可能地嘗試捕獲,但是當這個模塊拋出一個錯誤時,它顯然會將整個套接字服務器取下來。NodeJS - 子節點進程?
有沒有一種方法可以將兩者分開,如果連接的客戶端模塊腳本發生故障,它不一定會關閉整個服務器?
我假設這是子進程的用途,但文檔沒有提到啓動其他節點實例。
如果客戶端斷開連接,我顯然需要終止進程。
我正在使用NodeJS來運行套接字服務器(使用socket.io)。當客戶端連接時,我想要打開並運行一個模塊,它會執行一些操作。即使我儘可能地嘗試捕獲,但是當這個模塊拋出一個錯誤時,它顯然會將整個套接字服務器取下來。NodeJS - 子節點進程?
有沒有一種方法可以將兩者分開,如果連接的客戶端模塊腳本發生故障,它不一定會關閉整個服務器?
我假設這是子進程的用途,但文檔沒有提到啓動其他節點實例。
如果客戶端斷開連接,我顯然需要終止進程。
正如其他海報指出,你可以充分利用「虛擬機」模塊,但你也許可以從響應其餘告訴,這樣做增加了顯著的複雜性。
而且,從「虛擬機」 DOC:
Note that running untrusted code is a tricky business requiring great care. To prevent accidental global variable leakage, vm.runInNewContext is quite useful, but safely running untrusted code requires a separate process.
雖然我敢肯定,你可以運行在一個子進程的新實例的NodeJS,這裏最好的做法是瞭解您的應用程序能夠而且將會失敗,然後進行防禦性編程以處理所有可能的錯誤狀況。
如果你的代碼的某些部分「走(S)關閉整個服務器...」,那麼你真的理解爲什麼出現這種情況和解決問題,而不是依賴於另一個進程的要求工作,保護你設計和建立生產品質的服務。