怎么解决sockjs-node报错问题

这篇文章给大家分享的是有关怎么解决sockjs-node 报错问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站制作、网站设计、贵定网络推广、微信小程序、贵定网络营销、贵定企业策划、贵定品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供贵定建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com

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 报错问题

问题定位:

上网查找报错原因,发现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报错原因可能有很多,还可能是shadowsock代理、nodejs配置等,只要了解问题本质,正确的让ws访问到本地实际的地址即可。

感谢各位的阅读!关于“怎么解决sockjs-node 报错问题”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!


网页名称:怎么解决sockjs-node报错问题
分享地址:http://ybzwz.com/article/pspcph.html