DataChannelにてデータ送受信が正常に行われない
MediaChannelは正常にGateway経由でChromeに送信し再生できているのですが、
DataChannelでデータを送受信しようとすると正常に通信できない事象が発生しております。
挙動は以下画像の通り、
・aeiouをGateway経由でChromeに送信した場合、97がChrome側で受信され、送信した文字列と全く合っていない
・Chromeからtestと送信した場合、文字列testの前に何らかのバイト列が挿入されUDPで送信される
です。
また、環境は以下の通りです。
・gateway/ブラウザ共にFedora 32 (x86_64)環境で実行
・ブラウザはChrome 90.0.4430.93(Official Build) (64 ビット)
・gateway_linux_x64(v0.3.2)を使用
・御社P2P DataデモサイトのAPIキー(5bea...c480)を指定し、data_callee.rbを実行した後、Chromeにて御社P2P Dataデモサイトで挙動を確認しました
→P2P Data exampleを自前のサーバーにダウンロードし、新規発行したAPIキーで行っても同様の挙動でした
Gateway経由のDataChannelにつきまして制約等ございますでしょうか?
-
ご記載頂いた処理内容と結果は、正常動作となります。
以下、理由をご説明致します。SkyWayのSDKのDataConnectionにはserializationオプションがあり、そこで送信時のシリアライズ方法を指定します。
デフォルト値は `BINARY` で、これはBinaryPackを使うことを意味します。なお、JS/Android/iOS SDKは、発信側が設定したSerializationの設定に基づいて、データのシリアライズ処理を行います。
一方、WebRTC Gatewayはシリアライズ処理を行いません。利用者自身が、WebRTC Gatewayを経由してデータを送信する前、および受信した後に独自に処理する必要があります。ご記載頂いたケースでは、Gatewayでの送信時にシリアライズ処理を行っていないため、ブラウザ側では1文字目のASCIIコードのみが取得されました。受信時も同様にシリアライズ処理を行っていないため、先頭に不要なデータが存在しております。
対応としては、送信側のserializationオプションに`NONE`を設定するのがよいかと存じます。
これにより、ブラウザでは文字列をバイト列として受信でき、Gatewayでの受信データに不要な値が存在することもなくなります。
Please sign in to leave a comment.
Comments
2 comments