三年ぶりにWebRTCをGASでシグナリングで頑張るゾイ1
- ryunosinfx
- 843
- 1
- 0
- 0
WebRTCがドメイン付きhttpsじゃないと発動しないのをすっかり忘れてしまっていた・・・
2022-07-27 03:01:49うーん予想はしていたが放置していた3年間の間にAPIの仕様が若干変わってるな・・・ offer→answer(ここで終了ではなく)→candidatesを交換→接続 の流れか・・・ ※httpsにしてもつながらなかった
2022-07-28 02:08:58漸くつながったゾイ・・・ まあ単純にソースがバグっていた。ヨシヨシ。 問題はcandidatesの交換まで書かないと駄目か・・・
2022-07-29 21:45:21Firefoxさん・・ローカルで開かないんだが・・・ ローカルでもTURN鯖要求するとか贅沢すぎない? TURN鯖が必要ならWebRTCいらないのよ。
2022-07-30 17:47:36むむむ・・・ 結局接続方法がわからない・・ 同一プロファイルでの実行が不可能なら分かるが 別プロファイルでも駄目とか別ブラウザでも駄目となるとしんどいなぁ 同一デバイス上でWebRTCのデータチャンネルを開きたいだけなのだが・・・ FirefoxだけがグローバルIPネットワークしか見ていない
2022-08-01 03:11:37webrtc.github.io/samples/ ここを見ると 同一タブ内では可能だ・・・ 全然うまみがないけど。
2022-08-02 03:40:233秒ルールでCandidatesを交換できたらOKなのか それとも別のタブは絶許なのか・・・うーんローカルストレージ経由でやるか・・・
2022-08-02 03:54:33うん、出来たよ・・・ Firefoxで同一ブラウザプロファイルの別タブ間WebRTCのコネクション張りが。 1秒以内にシグナリング交換を完了できればいいっぽい・・・ これをRESTのチンタラマターリなGASで実現できるかと言うと・・・ 低レイテンシーな無料鯖は無いのか?10kB制限のある画像でもいい!
2022-10-04 03:21:31GASのキャッシュに一縷の望みをか・・・ レスポンスが300msとかならええなぁ※すでにダメそう developers.google.com/apps-script/re…
2022-10-05 01:55:59keyは250byte(512bitでBASE64でも88byteで2杯+384bit1杯いける)、キャッシュ本体は100kb(bookmarkletそのまま配布できるやん!)、最大1000件、最大10分で消失と すごく理想的だったりするのだが・・・
2022-10-05 02:20:51GAS久々すぎてどうでも良い所にハマってしまった。 まあキャッシュに入れて1.3秒、出すのに1秒と。 なかなか厳しい物が有るな・・・ 果たして、シグナリングは可能なのか? なんかこれだと0.2秒間隔で5並列ぐらい投げないと応答速度を稼げないのでは?
2022-10-12 03:33:42うむ、GAS経由でシグナリングに成功したぞい! これは!行ける! 問題は、負荷だなぁ・・・ タダのhttp鯖に問い合わせをしているだけなので で、どっちがオファーを出すかも分からない。 なので、オファー決定プロトコルが要るなぁ 状況を整理すると デバイスがn台あってつなぎたい。いいね。
2022-10-27 01:15:23この時、一回目のペアリングは良い。 問題は再接続時か。 デバイス自身がペアリング先とつながってない事が判明した時、どう振る舞えばいい? シグナリング鯖に今準備できてます宣言を20s間隔で問い合わせて、居たら0.2s間隔で問い合わせを開始、その状態を準備状態で登録 20sで相手も検知、オファーと
2022-10-27 01:40:2620s内に1000件のデータ密度まではペアリング処理が可能と1ペアリングに4レコード使用すると2.5ペア/sのスループットは出せるな。 鯖の対応としては即時消し、放置(※600s後に削除)の二択か。 クライアント側は20s以内でないと認めない的な。 これに暗号化が挟まると。
2022-10-27 02:05:53手軽さから言うと ユーザーがペアリングしたい場合 デバイスがn個存在して ①ネットワーク名を決める ②デバイス名を決める:面倒くさいのでUAのハッシュ値か、UUIDか。 ③シグナリング鯖を設定する この状態で繋がると良い。
2022-10-27 03:09:54それで、通信可能にするには 青歯の様に数桁の数字を入れてペアリングをすると。 この時にハッシュ値を交換して記憶 後は常にペアリング状態として通信を接続完了と同時に許可と。 ネットワークが切り替わって切れたらまあ1分以内に再接続と行った塩梅か。
2022-10-27 03:15:09あとはn台の接続をフルメッシュでやるかやらないかだなぁ。 AとBとCとDが同じグループに居るとして AとB、BとC、CとDがペアリングしている場合 AからCにデータ転送は出来るのか? リレーしたら出来るけど・・・・ これルーティングテーブルを持つイメージになるのかな? まあ、まずはペアリングだな
2022-10-27 03:19:08ハッシュ値が最高密度表現型のBASE64で512bitで88文字256bitで44文字、漢字でBASE4096とかで12bit1文字にすると512bitでも43文字だけどまあ声に出せない時点で終わってるな・・・UUIDがやはりいいのか。256bitで濁すか。
2022-10-27 12:59:53まず、wait状態の表明をシグナリング鯖にしないと始まらないそうなると、KVSなので一切のデータのリスト取得は出来ない。なので特定キー(ハッシュ値+秒数)でwait宣言と。このキャッシュってレコードロックは無理なのか。 とすると、時間単位にキャッシュを持つしか無いな・・・Waitは時間は大丈夫
2022-10-27 22:08:32キャッシュKVSに同時に同一Keyに書き込んだとき、後勝ちで上書きされる 従って ①一回同一キー書き込みをしてみて ②自分が振り出したランダム値が存在するか確認する ③存在した場合は後続に進む ④存在しない場合はしばらく待ってもう一度①からチャレンジする これで整流はできるな。
2022-10-27 23:05:19各端末は「ウェイ+ハッシュ値A」「ウェイ+ハッシュ値B」って言いながら Aが「あ、俺と違うハッシュ値が有る♡」 から A「俺待ってる+ハッシュ値A+ハッシュ値B」 に移行※AはBが同じことを自分より先にしていないことを確認する(20秒間) B「じゃあオファー出すね!」 で接続と 接続完了後待機解除
2022-10-28 12:41:33接続待機期間中は 複数コンテキストで並列にAPIに 「ねぇA/BからのOFFER/ANSWERまだ?」って アクセスしまくってしまう。 これはあまり良くない。 で、ペアリングを済ませたらデータ転送開始と。 この時のキーがハッシュ値+グループID+「俺待ってる+ハッシュ値A+ハッシュ値B」のハッシュ
2022-10-28 12:55:07tumblr.com/1-9-5/23402209… こんなんで実装したい「ウィス」
2022-10-28 19:55:18今はWebpack使ってるけど、ESMに移行しないとなぁ。 正直ビルドシステムを経由するのは後回しにしたい。 でないと手間がかかって仕方ない。
2022-10-28 20:16:50GASちゃん・・・doPostにasync使えないのなんとかしてクレメンス・・・どうやって待てばええんや・・・ (WhileでDate.now()の無限ループ) twitter.com/junderwood4649…
2022-10-29 04:46:37@howdy39 async await 使えるようになりました!!!! …でもAPIの殆どがまだ同期的に返ってくるのであまり活用できなさそうですね、まだ。。。 簡易的なラッパー作れますが。 async (url) => UrlFetchApp.fetch(url) (うろ覚え) doGet doPostも async にするとPromiseの戻り値にびっくりしてエラーw
2020-02-06 16:16:48