首頁  >  文章  >  web前端  >  如何解決sockjs-node 報錯問題

如何解決sockjs-node 報錯問題

藏色散人
藏色散人原創
2021-12-08 11:18:315712瀏覽

sockjs-node報錯的解決方法:1、在nginx上對9097埠進行設定;2、讓「/sockjs-node」能夠正常代理到本機實際連接埠上即可。

如何解決sockjs-node 報錯問題

本文操作環境:Windows7系統,nodejs10.16.2版,Dell G3電腦。

如何解決sockjs-node 報錯問題?

sockjs-node介面報錯解決方案

項目背景

在接手其他人angular專案時(vue.js可能也會遇到此問題),為了解決跨域前端配置了nginx,專案啟動後,後台ws報錯,如下圖所示:
如何解決sockjs-node 報錯問題

問題定位:

上網找報錯原因,發現sockjs-node為nodejs熱載入用於瀏覽器和本地通訊的接口,此時熱載入功能失效。因此判斷錯誤原因為:此通訊接口訪問到的是nginx代理的9097端口而不是實際服務啟動的8082端口,因此無法進行通信。

解決方案:

在nginx上配置對此9097埠進行配置,讓/sockjs-node其能夠正常代理到本機實際連接埠上,從而解決問題。
具體措施:
在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;
        }
    }

註:以上內容最重要的就是在反向代理的配置中增加瞭如下兩行,其它的部分和普通的HTTP反向代理沒有任何差異。
製造_這兩個欄位表示請求伺服器升級協定為WebSocket。

結語

實際情況中,/sockjs-node報錯原因可能有很多,也可能是shadowsock代理、nodejs配置等,只要了解問題本質,正確的讓ws訪問到本地實際的地址即可。

推薦學習:《

nodejs影片教學

》 

#

以上是如何解決sockjs-node 報錯問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn