ブラウザ上で動作するJavaScriptのみで、LAN内の別端末との通信を行う方法はありますか?なお結果的に近くのデバイスとの通信が行えれば必ずしもLAN通信を行う必要はありません。実行環境はWindows PCとします。
ブラウザ上でJavaScriptのみ(=クライアントサイドのみ)でLAN内の別端末と通信することは、通常の手段では制限があります。ただし、以下のような代替的または補助的手段を使うことで「近くのデバイスとの通信」を実現できるケースがあります。
✅ 実現可能な手段
1. WebRTC(ピアツーピア通信)
- 概要: ブラウザ同士で直接データ通信が可能(P2P)。LAN内で動作すればインターネットを介さず通信可能な場合もある。
- 用途: ファイル転送、リアルタイムチャット、センサーデータの共有など
- 必要条件:
- 通信を開始するためのシグナリング(仲介)サーバが必要(WebSocketやHTTPSで実装)
- いったん接続されればLAN内での直接通信も可能(NATトラバーサル成功時)
2. Web Bluetooth / Web USB / Web Serial
- 概要: 近くのデバイスとBluetoothやUSBシリアルで接続可能。
- 用途: IoTデバイスとの通信、マイコン制御など
- 制限:
- ユーザー操作による接続許可が必要
- 接続対象は原則として物理的に近いデバイス
- 一部ブラウザでのみ対応(Google Chromeなど)
3. Web Share API / Web NFC(限定的)
- 概要: モバイルブラウザで利用可能な近距離通信向けAPI
- 用途: 簡易的な情報共有(URLやテキストなど)
- 制限:
- Windows PC上のChromeではほぼ未対応
- 主にスマートフォン向け機能
❌ 通常は不可能な手段
クライアント側JSだけでの任意IP宛HTTP通信
fetch() や XMLHttpRequest() では CORS制限があるため、LAN内の任意のIPアドレス(例: 192.168.0.10:8000)への直接通信はそのサーバーがCORS対応していない限り不可能