這篇文章給大家分享的是有關(guān)怎么解決sockjs-node 報(bào)錯(cuò)問題的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來(lái)看看吧。
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、貴定網(wǎng)絡(luò)推廣、微信小程序、貴定網(wǎng)絡(luò)營(yíng)銷、貴定企業(yè)策劃、貴定品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供貴定建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com
sockjs-node報(bào)錯(cuò)的解決辦法:1、在nginx上對(duì)9097端口進(jìn)行配置;2、讓“/sockjs-node”能夠正常代理到本機(jī)實(shí)際端口上即可。
本文操作環(huán)境:Windows7系統(tǒng),nodejs10.16.2版,Dell G3電腦。
如何解決sockjs-node 報(bào)錯(cuò)問題?
sockjs-node接口報(bào)錯(cuò)解決方案
項(xiàng)目背景
在接手其他人angular項(xiàng)目時(shí)(vue.js可能也會(huì)遇到此問題),為了解決跨域前端配置了nginx,項(xiàng)目啟動(dòng)后,后臺(tái)ws報(bào)錯(cuò),如下圖所示:
上網(wǎng)查找報(bào)錯(cuò)原因,發(fā)現(xiàn)sockjs-node為nodejs熱加載用于瀏覽器和本地通信的接口,此時(shí)熱加載功能失效。因此判斷錯(cuò)誤原因?yàn)椋捍送ㄐ沤涌谠L問到的是nginx代理的9097端口而不是實(shí)際服務(wù)啟動(dòng)的8082端口,因此無(wú)法進(jìn)行通信。
在nginx上配置對(duì)此9097端口進(jìn)行配置,讓/sockjs-node其能夠正常代理到本機(jī)實(shí)際端口上,從而解決問題。
具體措施:
在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; } }
注:以上內(nèi)容最重要的就是在反向代理的配置中增加了如下兩行,其它的部分和普通的HTTP反向代理沒有任何差別。
roxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
這里面的關(guān)鍵部分在于HTTP的請(qǐng)求中多了如下頭部:
Upgrade: websocket
Connection: Upgrade
這兩個(gè)字段表示請(qǐng)求服務(wù)器升級(jí)協(xié)議為WebSocket。
實(shí)際情況中,/sockjs-node報(bào)錯(cuò)原因可能有很多,還可能是shadowsock代理、nodejs配置等,只要了解問題本質(zhì),正確的讓ws訪問到本地實(shí)際的地址即可。
感謝各位的閱讀!關(guān)于“怎么解決sockjs-node 報(bào)錯(cuò)問題”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!