如何解决sockjs-node 报错问题
sockjs-node报错的解决办法:1、在nginx上对9097端口进行配置;2、让“/sockjs-node”能够正常代理到本机实际端口上即可。
本文操作环境:Windows7系统,nodejs10.16.2版,Dell G3电脑。
如何解决sockjs-node 报错问题?
sockjs-node接口报错解决方案
项目背景
在接手其他人angular项目时(vue.js可能也会遇到此问题),为了解决跨域前端配置了nginx,项目启动后,后台ws报错,如下图所示:
问题定位:
上网查找报错原因,发现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反向代理没有任何差别。
roxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
这里面的关键部分在于HTTP的请求中多了如下头部:
Upgrade: websocket
Connection: Upgrade
这两个字段表示请求服务器升级协议为WebSocket。
结语
实际情况中,/sockjs-node报错原因可能有很多,还可能是*代理、nodejs配置等,只要了解问题本质,正确的让ws访问到本地实际的地址即可。
推荐学习:《nodejs视频教程》
以上就是如何解决sockjs-node 报错问题的详细内容,更多请关注其它相关文章!
上一篇: sqlmap用户手册
下一篇: 如何解决node 安装失败2503问题
推荐阅读
-
php中使用addslashes函数报错问题的解决方法_PHP
-
如何正确解决PHP缺少JSON包问题_PHP教程
-
解决Pytorch dataloader时报错每个tensor维度不一样的问题
-
如何解决mysqlimport: Error: 13, Can't get stat of 的问题_MySQL
-
android studio 3.0.1依赖butterknife报错问题解决办法以及androidstudio2.0和3.0以上butterknife的配置大全
-
ECSHOP完美解决Deprecated: preg_replace()报错的问题,ecshopdeprecated
-
这个问题应该如何解决?_html/css_WEB-ITnose
-
Laravel中VerifyCsrfToken报错问题的解决方法分享
-
如何解决magento2安装过程中缺少两个php扩展的问题:ext-intl和ext-xsl
-
如何解决Oracle GoldenGate 没有主键的问题?