gpt4 book ai didi

amazon-web-services - aws 网络套接字网关需要很多时间

转载 作者:行者123 更新时间:2023-12-04 17:36:50 27 4
gpt4 key购买 nike

我正在使用 AWS Websocket api 网关。我正在通过 aws:execute-api:region:account-id:api-id/stage-name/POST/@connections 向连接的客户端发送消息。但是,消息以某种方式被延迟并且UI 将无法立即收到聊天消息。我不知道为什么有什么建议哪里出错了????

有一件事非常特别,当我发送消息时,最后一条消息得到时间。示例:如果我发送一条消息需要很长时间。如果我发送第一条消息,就像我发送第二条消息一样,第一条消息将立即收到客户端,但现在第二条第二条消息需要很多时间。所以基本上当我发送第 n 条消息时,当发送第 (n+1) 条消息并且第 (n+1) 条消息需要很长时间才能传递时,每条第 n 条消息都会传递给客户端。

非常感谢您的帮助!!!

这只是我的代码片段

import * as AWS from 'aws-sdk';
export class AWSWebsocketGateway {
websocketInstance;
constructor() {
AWS.config.update({
accessKeyId: <accessKeyId>,
secretAccessKey: <secretAccessKey>,
region: <region>
});
this.websocketInstance = new AWS.ApiGatewayManagementApi({
endpoint: <webSocketDomainName> + <webSocketStage>
});
}

sendMessage(connection, messageObject, callback: Function) {

messageObject = JSON.stringify(messageObject);
this.websocketInstance.postToConnection({ ConnectionId: connection, Data: JSON.stringify(messageObject) }, function (error, data) {
console.log('Error', error, 'Send Message...', data);
return callback(error, data);
});
}
}

我在一个查询中从数据库中检索连接 ID,并在循环中调用此函数以发送消息。

最佳答案

对于其他被这个咬伤的人 ->

在完成 lambda 的执行之前,您需要等待 API 调用返回结果。

例如这行不通

module.exports.ping = async (event) => {
... //setting up api gateway, etc
apig.postToConnection({ ConnectionId: connectionId, Data: JSON.stringify(message) }, (err, res) => {})

return {
statusCode: 200
}
}

但这会:

module.exports.ping = async (event) => {
... //setting up api gateway, etc
await apig.postToConnection({ ConnectionId: connectionId, Data: JSON.stringify(message) }).promise();

return {
statusCode: 200
}
}

在 lambda 返回后执行的任何异步代码似乎已暂停,直到该处理程序再次运行,这就是为什么您会看到上面概述的延迟 n+ 问题。

关于amazon-web-services - aws 网络套接字网关需要很多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56360942/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com