websocket创建失败_我在vue中使用了这个示例的代码创建websocket,但是经常在刷新的事情出现错误...

在Vue项目中使用WebSocket时遇到连接失败的问题,特别是页面刷新后。当尝试发送消息时,WebSocket仍处于CONNECTING状态,导致'Failed to execute 'send' on 'WebSocket': Still in CONNECTING state.'错误。目前的解决方案是通过setTimeout等待一段时间再发送数据,但这种方法并不稳定。寻求更可靠的WebSocket连接与重试机制。
摘要由CSDN通过智能技术生成

export default {

data() {

return {

websock: null,

}

},

methods: {

threadPoxi(){  // 实际调用的方法

//参数

const agentData = "mymessage";

//若是ws开启状态

if (this.websock.readyState === this.websock.OPEN) {

this.websocketsend(agentData)

}

// 若是 正在开启状态,则等待300毫秒

else if (this.websock.readyState === this.websock.CONNECTING) {

let that = this;//保存当前对象this

setTimeout(function () {

that.websocketsend(agentData)

}, 300);

}

// 若未开启 ,则等待500毫秒

else {

this.initWebSocket();

let that = this;//保存当前对象this

setTimeout(function () {

that.websocketsend(agentData)

}, 500);

}

},

initWebSocket(){ //初始化weosocket

//ws地址

const wsuri = process.env.WS_API + "/websocket/threadsocket";

this.websock = new WebSocket(wsuri);

this.websock.onmessage = this.websocketonmessage;

this.websock.onclose = this.websocketclose;

},

websocketonmessage(e){ //数据接收

const redata = JSON.parse(e.data);

console.log(redata.value);

},

websocketsend(agentData){//数据发送

this.websock.send(agentData);

},

websocketclose(e){  //关闭

console.log("connection closed (" + e.code + ")");

}

我在网上看到这篇文章介绍如何在vue中使用websocket,使用他的代码,能够成功创建websocket服务,但是经常会出现在刷新页面的时候报错如下错误

Uncaught DOMException: Failed to execute 'send' on 'WebSocket': Still in CONNECTING state.

我猜测是这一段setTimeout()执行的时候readyState依然没有打开的状态,我试着把时间设置长一点好像出现的概率小了很多,但是这似乎不是一个好的解决方案

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值