WebRTC を利用した、 P2P チャットサービス
WebRTC の RTCDataChannel
を利用し、P2Pのフルメッシュネットワークを構築してその上でチャットデータを流しています。
サーバーは、静的アセットの配信とピア同士のマッチングに必要な情報(SDP/Candidate)の融通のみを行なっており、チャット内容には一切関与していません。
- あとから来た人にそれまでのチャットログを提供できていない
- P2Pの仕様上、本当に正しいチャットログを提供するのは難しい
- 正しさが担保されなくてもよいのであれば、一番長いログを持っている人があとから来た人にログを送信すればよい
- ネットワーク環境によって、チャットに接続できない
- TURNサーバーを立てれば解決できるが、めんどうくさい
- 遊びなので許してくれ
- ネットワーク環境の相性などによって、一部の参加者と通信できなかったりする
- P2Pのフルメッシュネットワークの弱み
- Mastodonなどを利用した、非中央集権型チャットサービス
- ActivityPubなどの上でマッチング用の情報を流してもらう
- 参加者の身元がわかる
- E2E暗号化
- WebRTCの層でもうされているようなので、さらにその上でやる必要はあるのか