見出し画像

📡Webrtcとwebsocketの違いはプロトコルスタック上での位置でwebrtcがブラウザ間でwebsocketはサーバとソケット


WebRTC(Web Real-Time Communication)は、ブラウザ間で直接、ピアツーピア(P2P)の接続を行うことでリアルタイムな通信を可能にする技術です。主に音声、映像、データをリアルタイムに交換するために使用されます。ビデオ会議、音声通話、ピアツーピアのファイル共有など、低レイテンシーかつ高帯域が必要な用途に適しています。

一方、WebSocketはクライアントとサーバー間で双方向に通信を行うためのプロトコルで、HTTPを利用して初めてのハンドシェイクを行った後は、フルデュプレックスの接続を確立し続けます。つまり、クライアントとサーバーはお互いにデータを送信できるようになります。これは、リアルタイムのチャットアプリケーションやゲーム、ライブフィードなどに使用されます。

  • WebSocket: アプリケーション層のプロトコルで、HTTP/HTTPS上で動作します。

  • WebRTC: さまざまな層での操作が必要です。例として、RTP(リアルタイムトランスポートプロトコル)を使用してオーディオとビデオを転送し、ICE(Interactive Connectivity Establishment)を使用してNATトラバーサルを行い、DTLS(Datagram Transport Layer Security)を使用して通信を保護します。

WebSocketsもp5.jsと一緒に使用することができます。WebSocketsはリアルタイムの双方向通信を可能にするためのプロトコルで、p5.jsのスケッチとサーバー間でデータの送受信を行う際に非常に役立ちます。

p5.jsの公式ライブラリにはWebSocketの機能は組み込まれていませんが、JavaScriptの標準APIとしてWebSocketをサポートしているため、直接使用することができます。また、p5.jsとの統合を容易にするサードパーティのライブラリやツールも存在します。

以下は、p5.jsを使ったWebSocketの基本的な使い方の例です:

let socket;

function setup() {
  createCanvas(400, 400);
  
  // WebSocketサーバーへの接続
  socket = new WebSocket('ws://your-websocket-server.com');

  // メッセージ受信時のイベント
  socket.onmessage = function(event) {
    let msg = event.data;
    console.log("Received:", msg);
  };
}

function draw() {
  background(220);
}

function mousePressed() {
  // WebSocketを使ってサーバーにメッセージを送信
  socket.send('Hello from p5.js!');
}

この例では、マウスをクリックするとWebSocketを通じてメッセージがサーバーに送信されます。また、サーバーからのメッセージを受け取った際にはコンソールに表示します。

もちろん、これは非常に基本的な例ですが、p5.jsとWebSocketsを組み合わせることでさまざまなリアルタイムのインタラクティブなアプリケーションやアートワークを作成することができます。

お願い致します