2012-04-26 10 views
3

我已經創建了基於無狀態協議的流,認爲2個Web服務器向對方發送非常有限的請求。在自定義流的基礎上構建

因爲既不知道我是否突然停止一個,因爲沒有連接會關閉,所以根本沒有請求。合理的請求可能存在差距,所以我不想把它們視爲丟失的連接。

我想要做的是發送一個心跳來說「我還活着」,但是當我讀取流的形式時,我顯然不想要心跳數據,所以我的問題。

如何創建一個新的流類來封裝另一個流併發送心跳數據而不會將其暴露給調用代碼?

+0

那麼,基本上多路複用你的流?我不確定我是否理解了這個完整的概念......你能用一種你認爲是對的僞代碼給出一些東西嗎? – IAbstract 2012-04-26 16:36:14

+0

我有我的建議,但可能不是你想要的 - 你期望對方**不要**心跳配合嗎? – 2012-04-26 16:39:19

+0

@alexei的類將包裝兩邊,這樣它會合作,我認爲你的回答應該做我想做的。 – 2012-04-26 16:44:42

回答

1

假設兩邊有兩個類似的實現:發送每個數據塊與一個頭,以便您可以安全地發送零數據心跳塊。即將外部流上的寫入轉換爲像「{數據,100字節,[字節]},{數據,13字節,[字節]}」等內部流上的幾次寫入,心跳看起來像「{Ping,0字節,[]} 」。在接收端立即回覆類似空的Ping。

相關問題