一、报错信息
进行到websocket开发的过程中,遇到了前端报错,无法连接的提示:
经过F12排查很明显是服务端和客户端并没有连接成功。这里就涉及到之前的坑,现在需要填上了。
二、报错原因和推导
应该还记得刚开苍穹的第一天配置前端环境时,会发现ngnix启动不了吧?排查原因后,发现是默认的80端口被系统进程占用了,你为了方便后续的测试,将ngnix的默认端口改成了8888。
与此同时,苍穹的前端环境几乎是固定死了的,也就是有一些配置方面的东西,还是按照着80端口来的,这样一来,Websocket自然是连接不上的。
所有就衍生出下面两种解决方法
三、解决方法
1. 修改ngnix配置文件 为80端口,同时终止原先系统进程占用的80端口
修改配置文件ngnix.conf server listen 80
停用80 端口服务
C:\Users\goodboy>net stop http
下面的服务依赖于 HTTP Service 服务。
停止 HTTP Service 服务也会停止这些服务。
World Wide Web 发布服务
SSDP Discovery
Print Spooler你想继续此操作吗? (Y/N) [N]: y
World Wide Web 发布服务 服务正在停止.
World Wide Web 发布服务 服务已成功停止。
SSDP Discovery 服务正在停止.
SSDP Discovery 服务已成功停止。
Print Spooler 服务正在停止.
Print Spooler 服务已成功停止。
HTTP Service 服务已成功停止。
重启ngnix服务器
2. 一劳永逸,保持ngnix端口不变,修改前端环境信息(推荐)
在前端代码js中,先后找到app.d0aa4eb3.js 和 app.d0aa4eb3.js.map文件
打开: app.d0aa4eb3.js
查找: localhost
修改:在localhost后添加 现在你的ngnix监听的端口号
例如我的: localhost:8888
打开: app.d0aa4eb3.js.map
查找:process.env.VUE_APP_SOCKET_URL
替换成: ws://localhost:8888/ws/
四、测试
重启服务器
还是报错,考虑浏览器缓存(可以清除浏览器缓存),开一个InPrivate 浏览
成功,测试一下能否及时响应新订单: