我有一個基本上是長輪詢實現的一部分的進程。簡而言之,客戶端向服務器發出請求,然後服務器創建一個通道並將其返回給該客戶端。該頻道將包含客戶要求提供的信息。由於這是爲了用於長輪詢,因此客戶請求的信息可能會發生變化。如果信息發生變化,服務器會將更新寫入通道,理論上,客戶端可以獲取更新並反映該信息。如何確定core.async頻道何時從作者身邊關閉?
我面臨的問題是,我有可能結束大量的頻道,當發生更新時可能導致不必要的處理。我可能會更新客戶不再關心的渠道。
我的解決方案是,一旦客戶端停止關心信息,它會關閉通道,它會以某種方式通知服務器,並阻止服務器進行額外的處理和更新。
服務器如何知道通道是否關閉?在這種情況下,服務器本質上是一個作家,不會從通道讀取任何內容。另外,所有的寫入方法都被封裝在一個go塊中,所以它總是返回一個通道(我沒有看到任何nils)。有沒有辦法做到這一點,或者我的方法完全關閉?
感謝