我正在构建一个最小的聊天应用程序,我正在使用Amazon网关WebSocket和。
但是当我试图发送一条消息时,会发生一件很简单的事情:只有当我发送one..and时,我才会收到最后一条消息。
但最奇怪的是,这种行为只发生在刺激环境中。在dev环境中(使用相同的代码),它正常工作。除了手工创建的API网关之外,infastructure也是使用SAM模板部署的(但是选中了,dev和prod都是相同的)。
我还尝试删除API网关并再次创建它。如果某些代码依赖于DEV/PROD环境,我也尝试过,但仍然没有。
编辑:
我添加了一个ping/pong消息,以查看它什么时候的行为,结果如下:
> {"action": "ping"}
> {"action": "ping"}
> {"action": "ping"}
> {"action": "ping"}
< {"type":"ping","message":"Pong!"}
< {"type":"ping","message":"Pong!"}
> {"action": "ping"}
< {"type":"ping","message":"Pong!"}
> {"action": "ping"}
< {"type":"ping","message":"Pong!"}
> {"action": "ping"}
< {"type":"ping","message":"Pong!"}
> {"action": "ping"}
< {"type":"ping","message":"Pong!"}
> {"action": "ping"}
< {"type":"ping","message":"Pong!"}
> {"action": "ping"}
< {"type":"ping","message":"Pong!"}
> {"action": "ping"}
< {"type":"ping","message":"Pong!"}
> {"action": "ping"}
< {"type":"ping","message":"Pong!"}
> {"action": "ping"}
< {"type":"ping","message":"Pong!"}
< {"type":"ping","message":"Pong!"}
> {"action": "ping"}
> {"action": "ping"}
> {"action": "ping"}
< {"type":"ping","message":"Pong!"}
< {"type":"ping","message":"Pong!"}
< {"type":"ping","message":"Pong!"}
> {"action": "ping"}发布于 2022-04-30 20:17:47
以下是那些可能陷入同样问题的人的解决方案。
在.map()或forEach()方法中使用异步似乎会导致问题。我也不知道原因。
下面是一个例子:
// DON'T
arrayOfConnections.forEach(async connectionID => {
const sent = await WS.sendToOne(connectionId, msgWrapper)
}
// DO
for(let connectionID of arrayOfConnections) {
const sent = await WS.sendToOne(connectionId, msgWrapper)
}https://stackoverflow.com/questions/72066260
复制相似问题