2014-03-27 148 views
4

我有多個發件人通過Chrome同時連接到我的接收器。當其中一個發送者斷開連接(關閉瀏覽器窗口,刷新頁面,失去連接...等)我想在接收器上觸發「onSenderDisconnected」事件。將客戶端斷開連接並重新連接到接收者會話

到目前爲止,這似乎只發生在因任何原因丟失連接時。例如,如果發件人只是刷新,發件人永遠不會被刪除,並且會創建新的發件人。這意味着我可能有兩個發件人從相同的來源「連接」。

有沒有什麼方法可以在重新連接時刪除舊的發件人,或者是否有辦法在重新連接時保留相同的senderID?

我還希望給每個發件人手動(使用按鈕)從會話中斷開連接的選項。目前唯一的方法是停止投射到設備,但會爲所有用戶結束會話。我該怎麼辦?

回答

1

對於第一項(即在每次重新加載時添加更多發件人),我已打開內部問題來調查此問題。對於第二個,目前你不能停止你的Chrome發送器而不停止應用程序;您可以(a)停止應用程序+斷開連接(如果您使用擴展名)或(b)關閉標籤,就像「什麼都沒有發生過」一樣。我們正在考慮將其與另外兩個平臺上的API進行比較。

+3

我很害怕這個。我通過創建一個「Sender」對象數組並相應地更改其ID來處理第一個問題。看起來冒號之前的數字(如2:2:client:23522)對於特定的發件人保持不變。所以我只是根據該號碼更新發件人的真實ID。這似乎工作正常,但它是一種奇怪的解決方法。希望在不久的將來有更好的方式來斷開/重新連接客戶端。 – ninemind

+0

@ninemind你會介意用你描述的解決方法發佈一個答案嗎?在谷歌修復這個問題的同時,爲該問題提供補丁將是一件好事。謝謝! –

+0

@dome我只是做了,讓我知道如果答案是清楚的 – ninemind

3

對於第一個問題,我通過手動跟蹤我的「發件人」來處理它。

每個發件人都有一個「ID」。像2:client:23522。無論特定客戶端重新連接到會話的次數,冒號(2)之前的第一個數字似乎都保持不變。第二個號碼(23522)每次都會更改。

通過檢查連接客戶端的第一個號碼,您可以確定它是新客戶端還是重新連接的現有客戶端。這樣,當在客戶端/發送者之間來回發送消息時,您可以保留一組「活動」客戶端,並忘記舊的未使用客戶端ID。

+0

答案給出了你在做什麼的明確解釋,唯一缺少的是一些代碼上下文知道手動控制發件人的位置。我的猜測是你使用'onSenderConnected',但這只是一個猜測;)謝謝! –

+1

@dome我目前沒有任何示例代碼可用,但是您正確地假設我在'onSenderConnected'方法中處理了該代碼。當我有機會時,我會用代碼示例更新我的答案。 – ninemind

+0

太棒了!謝謝 ;) –

相關問題