我的问题似乎是服务器正在监听某个事件的WebSocket,然后当某个事件被听到时,它应该通过一个不同的WebSocket来触发它自己的事件,但该事件很少被触发。随着函数availabilityCheck中的条件语句被移除,事件总是被激发而不是很少。为了清楚起见,服务器连接了2个套接字Web套接字。 (2)Socket io不会因if语句触发事件,可能是竞态条件?
从websocket(1)听到的事件通常在毫秒内2-4次 - >后端执行逻辑(但只有一次事件,尽管事件被触发2-4次) - >事件应该触发websocket(2)
let obj = {available: 0}
if (event.Event == 'AgentConnect') {
const agentExtension = '1001'
availabilityCheck(event, agentExtension)
.then(function() {
socket.emit('AgentConnect', agentExtension); //works rarely, but always works when the if statement inside availabilityCheck() is removed
}).catch(function(err){
console.log(err);
})
}// end if
function availabilityCheck(evt, agentExt) {
return promise = new Promise(function (resolve, reject) {
if (obj.available == 0) {// When this conditional is removed the socket event always fires
obj.available =1;
resolve();
} else {
reject('agent unavailable');
}
})
}
其中obj来自哪里? – Cruiser
没有真正的相关性,但为了清晰起见,我在顶部添加了它 – HarrisonSchultz