這是我詢問的another question的後續行動,但是提供了更精確的信息。使用SignalR作爲WebRTC的服務層
我有兩個基本相同的網頁,演示WebRTC,一個使用XSockets作爲後端信令層,一個使用SignalR作爲後端信令層。
兩個後端基本相同,只有在它們(顯然)有不同的方式將數據發送到客戶端時纔有所不同。同樣,兩個客戶端上的TypeScript/JavaScript WebRTC代碼是完全相同的,因爲我已經抽象出了信令層。
問題是,XSockets網站一直工作,而SignalR站點失敗(大多數情況下一致,但不完全)。通常在調用peerConnection.setLocalDescription()
時失敗,但它也可能失敗默默;或者它可以(有時)甚至可以工作。
這裏你可以看到在操作兩個不同的網頁:
XSockets網站:http://xsockets.demo.alanta.com/
SignalR網站:http://signalr.demo.alanta.com/
兩個的源代碼是在https://bitbucket.org/smithkl42/xsockets.webrtc,與在該XSockets版本xsockets
分支,以及signalr
分支上的SignalR版本。
所以我的問題是:有沒有人知道爲什麼使用一個信號層而不是另一個會對WebRTC產生影響?例如,一個或另一個發送Unicode字符串而不是ANSI?或者我誤解了這個問題,真正的區別在別處嗎?
Ken,您是否僅使用SignalR進行信號傳輸或傳輸視頻/音頻數據? –
@ElanHasson - 僅用於信號發送。 WebRTC很複雜,並且不完全實現(基本上只有Firefox和Chrome,存在一些互操作性問題),但仍然是實時視頻/音頻數據的首選傳輸方式。我沒有嘗試過使用WebSockets來傳輸音頻/視頻,但是從我所知道的設計和典型實現中,我認爲你會遇到一些真正的問題。我認爲長時間輪詢,服務器端事件和其他類似的方法將是一個不起步的。 –
我同意。現在我剛切換到Flex/Red5。 Red5可以對HTML5視頻元素可以使用的實時流進行轉碼,並在Flash查看器上進行回退。 在開發此解決方案時,我死於一點兒內部。 –