我正在连接一个websocket服务器并从中请求数据,我面临的问题如下:
websocket服务器每10秒钟向我发送一条消息,我必须在收到该消息后立即回复。
当我处理从服务器接收到的数据时,我需要的时间远远超过10秒,也就是说我需要大约5分钟的时间来处理接收到的每个数据。
我有一个循环,该循环会执行以下操作:首先从websocket连接接收数据,然后在本地计算机中处理(这需要时间),发送另一个请求并从websocket连接接收新数据,等等。
我想保持websocket连接的活动状态,但是我需要回复服务器的间隔大约是10s,这比我处理数据所需的时间短得多,该怎么办?
以下伪代码解释了上述声明:
# first init plan apply cycle
# Configure the AWS Provider
# https://www.terraform.io/docs/providers/aws/index.html
provider "aws" {
version = "~> 2.0"
region = "us-east-1"
}
resource "aws_s3_bucket" "terraform_remote_state" {
bucket = "terraform-remote-state"
acl = "private"
tags = {
Name = "terraform-remote-state"
Environment = "Dev"
}
}
# add this sniped and execute the
# the second init plan apply cycle
# https://www.terraform.io/docs/backends/types/s3.html
terraform {
backend "s3" {
bucket = "terraform-remote-state"
key = "path/to/my/key"
region = "us-east-1"
}
}
答案 0 :(得分:1)
我认为您的伪代码要复杂得多。我将使用JavaScript编写解决此问题的版本(您必须指定端口)。
let storyboard: UIStoryboard = UIStoryboard(name: "MyStoryboard", bundle: Bundle.main)
viewController.present(cryptoTransactionViewController, animated: true, completion: nil)
您需要做的就是创建一个新的线程(运行您的长函数异步)。当longFunction完成后,线程关闭,您回到无限循环(在我的代码段中,ws.onMessage监听服务器消息是无限的)。但是一段时间后,您将拥有与服务器发送的消息一样多的线程,因此,请谨慎创建线程。