ポート80(http)と443(https)にnode.js
を使用してexpress
サーバーをセットアップしました。そのサーバーとは別に、別のポート8000
にWebSocketサーバーをセットアップしました。
var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer({port: 8000});
Expressが提供するサイトが機能するには、これらのサービスに接続する必要があります。問題は次のとおりです。http
を介して自分のサイトにアクセスすることは正常に機能しますが、https
から次のようになります。
index.js:100 Mixed Content: The page at 'https://example.com/' was
loaded over HTTPS, but attempted to connect to the insecure
WebSocket endpoint 'ws://my_sites_ip:8000/'. This request has been
blocked; this endpoint must be available over WSS.
なぜこのエラーが発生するのですか?これは、WebSocketサーバーがhttpサーバーとは異なるプロセス/ポートにあるという事実と関係がありますか?どうすればそれを機能させることができますか?
エラーはあなたに何をすべきかを教えています。 httpsを使用する場合は、wssでwebsocketを使用してください
この投稿を見てください html5 Websocket with SSL WebSocket接続は、HTTPまたはHTTPSハンドシェイクで始まります。ページにHTTP経由でアクセスする場合は、WSまたはWSS(WebSocketセキュア:WS over TLS)を使用できます。ただし、ページがHTTPSを介して読み込まれる場合は、WSSのみを使用できます。ブラウザではセキュリティを「ダウングレード」することはできません。