本博所有内容都在个人博客橙寂博客中
问题
昨天碰到个很奇怪的问题,我写了个webSocket通讯,但是我本机部署是好好的,部署到远程服务器上就不行。很纳闷。我就排查了下问题。
排查过程
1.首先我在代码中写死ip去连接。报302不行,这个是跨域问题。跨域是咋回事的就是项目访问路径时域名但是你连接socket用的是ip所以就跨域了。
2.然后我我就直接使用ip去访问项目不使用域名。这时ok了?????我一脸懵逼。所以问题关键点找到了是nginx域名转发的原因。所以就上网查了下发现果然很多人跟我遇到了一样的问题。这里我找到了解决方案。
解决方案
location / {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
上面那两句是做了一个外网穿透,具体原因是为什么我也没理解,有哪位大哥理解了可以告诉一下我。感激不尽。
webSoket连接部分源码
前台
var websocket = null;
var Ip = window.location.host;
if ('WebSocket' in window) {
websocket = new WebSocket("ws://"+Ip+"/ws/dkuserSocket