6

これは私が尋ねた別の質問のフォローアップですが、より正確な情報があります。

WebRTC をデモする 2 つの基本的に同一の Web ページがあります。1 つは XSockets をバックエンド シグナル レイヤーとして使用し、もう 1 つはバックエンド シグナル レイヤーとして SignalR を使用します。

2 つのバックエンドは基本的に同一であり、クライアントにデータを送信する方法が (明らかに) 異なる点のみが異なります。同様に、2 つのクライアントの TypeScript/JavaScript WebRTC コードは、シグナリング層を抽象化したので完全に同一です。

問題は、XSockets サイトが一貫して動作する一方で、SignalR サイトが失敗することです (完全ではありませんが、ほぼ一貫して)。通常、呼び出し中に失敗しますがpeerConnection.setLocalDescription()、サイレントに失敗することもあります。または、(場合によっては)機能することもあります。

ここで、2 つの異なるページの動作を確認できます。

XSockets サイト: http://xsockets.demo.alanta.com/

SignalR サイト: http://signalr.demo.alanta.com/

両方のソース コードはhttps://bitbucket.org/smithkl42/xsockets.webrtcにあり、XSockets バージョンはxsocketsブランチに、SignalR バージョンはsignalrブランチにあります。

だから私の質問は: ある信号層を別の層の代わりに使用すると WebRTC に違いが生じる理由を誰か知っていますか? たとえば、どちらか一方が ANSI ではなく Unicode 文字列を返しますか? それとも、私が問題を誤診したのでしょうか?本当の違いは別の場所にありますか?

4

1 に答える 1

2

理解した。SignalR 1.0 RC1 には、文字列内のすべての "+" をスペースに変更するバグがあることがわかりました。したがって、SDP の行は次のようになります。

a=ice-pwd:qZFVvgfnSso1b8UV1SUDd2+z

これに変更されていました:

a=ice-pwd:qZFVvgfnSso1b8UV1SUDd2 z

しかし、すべての SDP が重要な行に「+」を含んでいるわけではないため、うまくいく場合もあります。すべてが説明されました。

このバグは、SignalR に取り組んでいる善良な人々に報告されており ( https://github.com/SignalR/SignalR/issues/1194を参照)、それまでの間、問題の文字列を単純encodeURIComponent()decodeURIComponent()修正しました。

于 2012-12-21T09:39:46.440 に答える