我正在使用WebRTC技術進行一些測試,但在Chrome和Firefox之間RTCDataChannel存在一些問題。連接工作正常,我可以在兩個瀏覽器之間發送數據,但問題出現在兩個斷開連接之一時。RTCDataChannel.send Firefox問題
當Chrome發送數據並且Firefox接收數據並且Firefox斷開連接時,Chrome端的通道將其readyState設置爲關閉,並且我可以處理該消息以顯示消息。
當Firefox發送數據並且Chrome接收數據並且Chrome斷開連接時,Firefox端的通道不更改其readySTate,所以我無法處理這個問題,顯然Firefox繼續將數據發送到閉合通道?
我的代碼很簡單:
囑咐連接:
[...]
if(offerer){
channel = connection.createDataChannel("dataChannel", null);
setChannelEvents(channel);
connection.createOffer(myFunc, showError);
}else{
connection.ondatachannel = function(event){
channel = event.channel;
setChannelEvents(channel);
}
}
[...]
當連接就堅定並可以發送郵件:
[...]
try{
channel.send(message);
}catch(e){
//handle error here
[...]
}
[...]
正如我所說的,在Chrome channel.send時(信息);返回錯誤(因爲readyState設置爲關閉並且不能發送消息),'此處處理錯誤'中的代碼會執行,但在Firefox中不會執行。
有人可以幫助我嗎?這有點令人沮喪。 謝謝!
我試過你的代碼但不工作。我的問題是,即使其他用戶關閉了頻道,channel.readyState也始終處於「打開」狀態。所以,執行總是進入「case」打開'「:( – AliMola
目前我使用Windows 10,Firefox 46.0.1和Chrome 51.0.2704.63。請告訴我你的操作系統版本和瀏覽器版本 – Andrej
我使用的是Mac OSX El Capitan與Chrome 50.0.2661.102(64位)和Firefox 46.0.1 – AliMola