ホームページ >ウェブフロントエンド >jsチュートリアル >sockjs-node エラー報告の問題を解決する方法

sockjs-node エラー報告の問題を解決する方法

藏色散人
藏色散人オリジナル
2021-12-08 11:18:315755ブラウズ

sockjs-node によって報告されたエラーの解決策: 1. nginx でポート 9097 を構成します; 2. 「/sockjs-node」がマシンの実際のポートに適切にプロキシされることを許可します。

sockjs-node エラー報告の問題を解決する方法

この記事の動作環境: Windows 7 システム、nodejs バージョン 10.16.2、Dell G3 コンピューター。

sockjs ノードのエラー報告の問題を解決するにはどうすればよいですか?

sockjs-node インターフェイス エラーの解決策

プロジェクトの背景

他の人の angular プロジェクトを引き継いだとき (vue.js でもこの問題が発生する可能性があります)、nginx がクロスドメイン フロントエンドで構成されていました。プロジェクトが開始された後、バックグラウンドでエラーが報告されました。次の図に示すように:
sockjs-node エラー報告の問題を解決する方法

問題の場所:

インターネットでエラーの原因を検索したところ、sockjs-node が nodejs のホットロード インターフェイスであることがわかりました。ブラウザとローカル通信に使用されますが、このときホットロード機能は失敗します。したがって、エラーの原因は、この通信インターフェイスが実際のサービスが開始される 8082 ポートではなく、nginx プロキシの 9097 ポートにアクセスするため、通信が実行できないということです。

解決策:

問題を解決するために、/sockjs-node が通常、マシンの実際のポートにプロキシできるように、nginx でこの 9097 ポートを構成します。
具体的な対策:
nginx に nginx 設定を追加

http {
    include       mime.types;
    default_type  application/octet-stream;
    map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
  }
 server {
        listen 9097;
        server_name localhost;

	location /sockjs-node {
            proxy_pass http://0.0.0.0:8082;
	    proxy_set_header Upgrade $http_upgrade;
	    proxy_set_header Connection $connection_upgrade;
        }
    }

注: 上記に関して最も重要なことは、リバース プロキシ設定に次の 2 行を追加することです。この部分と通常の HTTP リバース プロキシに違いはありません。
roxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
ここで重要なのは、HTTP リクエストに次のヘッダーがあることです。
Upgrade: websocket
Connection: Upgrade
これら 2 つフィールドは、サーバーがプロトコルを WebSocket にアップグレードするように要求されていることを示します。

結論

実際の状況では、Shadowsock プロキシ、nodejs の設定など、/sockjs-node エラーが報告される理由は数多くある可能性があります。問題の性質を理解している限り、 ws がローカルの実際のアドレスにアクセスできるようにするには、アドレスで十分です。

推奨学習: 「nodejs ビデオ チュートリアル

以上がsockjs-node エラー報告の問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。