vue的webpack代理websocket配置

场景: 在前端vue项目中需要使用websocket,同时项目中使用代理的方式进行后端请求。

目前网上几乎没有关于这一块的配置说明资料,本人也就随便记两笔吧,以便后人爬坑有所依靠。哈哈 有用记得点赞!

1 在项目的config/index.js文件中的dev参数下增加代理配置:

dev: {
   proxyTable: {
      '/socket': {
        target: 'ws://localhost:8000',//后端目标接口地址
        changeOrigin: true,//是否允许跨域
        pathRewrite: {
          '^/socket': '',//重写,
        },
        ws: true //开启ws, 如果是http代理此处可以不用设置
      }
    },

 。。。
}

2 在vue的初始化websocket连接处的uri写法:

此处的uri的写法 'ws://' + location.host + '/socket/websocket/' + id 。

//此处因已将websocket添加到vue中所以通过this.$connect()方法创建websocket连接
this.$connect('ws://' + location.host + '/socket/websocket/' + id + '/' + cn, { format: 'json' })

需要注意几点:
     a、此处uri前面必须加ws://前缀

     b、uri的前缀后面必须是location.host,表示ws访问当前前端项目的地址,而不能只写代理的key值‘/socket’ 或其他地址端口

     c、在location.host后面紧跟的是代理key值,与第1步中定义的key一致‘/socket’

     d、地址中其他部分为后端api的uri

3、后端websocket的server类


@ServerEndpoint("/websocket/{userId}/{cn}")
@Component
public class WebSocketServer {

    。。。此处代码省略,网上一大把
}

可能出现的异常:

Uncaught DOMException: Failed to construct 'WebSocket': The URL 'ws://localhost/socket/xxx' is invalid.

出现上述异常 或类似异常的,基本可以确定是URL配置错误。导致上面的错误其实就是uri中:ws://localhost/....与系统前端访问地址不一致导致代理失败(或代理未生效),此处必须加ws:// 以及 与前端访问地址端口一致,见第2步中正确写法

  • 15
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天使马克

写博客不易,客观打赏一下吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值