2012-10-03 58 views
0

我正在開發一個使用牛仔和sockjs的erlang應用程序,我不知道是否有可能與處理websocket連接的牛仔處理鏈接?鏈接牛仔處理,處理websocket連接(牛仔,erlang)

現在使用gen_server行爲進程與每個websocet conenction相關聯。這樣的過程在init中存儲Conn實例,並且當客戶端關閉連接時,該過程從websocket處理程序終止,並且如果gen_server進程終止,則從進行清理的gen_server的terminate()中調用Conn:close。它的工作原理,但我不喜歡這個解決方案,因爲有幾種情況下,即使與trap_exit啓用終止函數不會被調用,所以如果可能的連接,這將是更好,更簡單的解決方案。

回答

0

什麼情況下終止不會在gen_server上調用?

從理論上講,你可以從Conn對象中提取Pid,但是這明顯破壞了封裝。

如果您可以提出一個理想的API來解決您的問題(並請在拉請求中詳細解釋問題),請隨時提交拉請求。

+0

如果使用erlang:exit(GenServerPid,kill)或者使用supervisor的brutal_kill策略來終止gen_server,那麼terminate()將不會被調用。任何方式,如果沒有打破封裝沒有解決方案,我會使用我上面提到的那個。 –