Articles of 延迟

Swift队列和延迟过程

在迅速3.0 我需要在节点服务器上点击一个button发送一个字典,用户可以频繁地点击或点击这个button。 所以我需要一次又一次地把这个字典发送到队列中,并延迟一段时间。 同时用户可以多次按HIT键,但QUEUE会逐个单独执行,不依赖于单击button。 这是我的代码 func sendProductInCart(Product: NSString) { delayWithSeconds(5) { let msgToSend: String = String.init(format: "__JSON__START__%@__JSON__END__", Product) print("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++") print(msgToSend) let data: Data? = msgToSend.data(using: String.Encoding.utf8) _ = data?.withUnsafeBytes { self.outputStream.write($0, maxLength: (data?.count)!) } } } func delayWithSeconds(_ seconds: Double, completion: @escaping () -> ()) { DispatchQueue.main.asyncAfter(deadline: .now() + seconds) { completion() } } 但这是行不通的。 […]

在使用Juggernaut同步客户端定时器时处理延迟

我需要为幻想体育网站实施申请草案。 每个用户将有1m30select一个球员,如果时间已过,将被自动select。 我们计划的实施将使用剑圣将轮到的变化推向参与草案的每个用户。 但是我仍然不确定如何处理延迟。 这里的主要问题是,如果一个用户得到比其他用户更高的延迟,那么他稍后将收到转换,他的定时器将不会同步。 说有人自己select了一名球员,而他自己认为自己还剩下2秒时就会有转机,我们该如何处理呢? 尝试测量每个用户延迟并调整客户端计时器以最大限度地减less该问题是否更好? 如果是这样,我们怎么能实现呢?

彗星服务器和networking延迟时间

对于一个社交网站,我们使用基于node.js的慧星服务器作为即时通讯工具,一切正常,我们只有一个问题,如何解决延迟问题到澳大利亚和新西兰,我们有310毫秒到440毫秒的RRT。 一个想法是拥有本地服务器,但是在这种情况下,他们必须连接到澳大利亚用户能够与英国用户通信的主服务器。 这个彗星连接也会有较高的延迟,但本地用户可以快速聊天,这将是大多数情况下。 有没有人有更好的主意,然后使用本地彗星服务器?

性能/延迟差异 – Node.js中的dynamic与静态路由

如果我决定使用DRY方法并在一个路由可以处理多个不同的任务时dynamic地设置我的路由,这会导致延迟问题? 这是我的第一个Node.js项目,我只是将它用作后端来处理使用RESTful体系结构的请求,其中一些最终用户请求的数据可能非常大。 在决定在node.js中使用dynamic还是静态路由时,会有性能差异吗? 在那里,我有大约10个不同的资源可以获得 app.get('/resource1', …. app.get('/resource2', …. app.get('/resource3', …. app.get('/resource4', …. …. 大约有一半会通过参数或某种查询。 我目前configuration为它被dynamic设置,然后在我有sorting逻辑,然后我处理这样的要求。 app.get('/:resource* ', …. [sorting logic for every case] [handle request] 我假设这将导致更高的延迟。 这种情况下的折衷和最佳做法是什么?

在Sails express节点中,如何在请求的页面加载的同时显示广告

一旦服务器收到客户的请求,一些数据处理过程需要几秒钟的时间… 我们如何在客户端等待有效载荷时显示广告 ? 与AJAX相同的问题 除非必要,否则我们不得在Sails之上使用库或框架

什么时候应该使用Q.defer,何时应用Promise.resolve / reject?

我正在使用nodejs,想知道什么时候应该使用Q延迟,什么时候使用Promise.resolve / reject? 我看到了很多这样的例子,例如: // with Q defer fucntion oneWay(myVal) { var deffered = Q.defer(); if (myVal < 0) { deffered.reject(new Error('nope')); } else { deffered.resolve('yay'); } return deffered.promise; } // native Promise fucntion orAnother(myVal) { if (myVal < 0) { return Promise.reject(new Error('nope')); } else { return Promise.resolve('yay'); } } 有什么区别,什么时候使用difer是一个很好的做法? Promise.resolve / reject(native)和Q.resolve […]

在NodeJS中select同步计算的时延太大?

我正在编写一个node.js插件来执行一些encryption计算,这可能需要大约1μs – 20μs。 现在我有一个select:将其实现为同步或asynchronous方法(在后台工作者上进行计算)? 很显然,networking和I / O,有时需要超过一毫秒,应该asynchronous完成。 parsingJSONinput很快,应该同步完成。 在我的情况下保持低延迟是重要的,但优化离开微秒感觉很像过早的优化。 因此,考虑到这种情况,我有兴趣就这个问题提出你的看法: 当使用node.js时,(同步)调用需要阻塞多长时间,直到您决定在后台线程上asynchronous运行它为止?

是否有像node.js中的延迟(Q)监视器?

我希望看到所有未解决的状态(如果可能的话,所有的延迟日志:初始化,未解决,已解决/拒绝状态)。 有没有什么机制呢? 例如: Q.getAllDeferreds()或Q.getLog()

用Q.deferred捕获错误

我有一个nodeJS项目,我希望使用asynchronousfunction。 也就是说,我正在使用Q库。 我有一个叫做someFunction()的函数,我希望返回一个promise。 有了这个function,我就可以检查这个承诺是否已经解决或被拒绝了,如下所示: someFunction() .then( function(results) { console.log("Success!"); }, function (error) { console.log("An error occurred, and I would wish to log it for example"); } ); 我对上面的函数直观的预期是,错误函数会捕获所有可能的错误。 所以如果在someFunction内部引发一些exception,我可以放心,错误函数将会运行('then'之后的第二个函数)。 但似乎并非如此。 例如,假设someFunction将被定义如下: function someFunction() { var deferred = Q.defer(); throw new Error("Can't bar."); deferred.resolve("success"); } 现在,如果我像调用上面的代码块一样调用someFunction()函数,它将不会运行错误函数。 这是为什么? Q.承诺错误的部分是不是错误? 为什么我应该手动拒绝发生的每一个错误? 我知道我可以将someFunction的全部内容设置为try / catch子句,然后拒绝这个延期的,但是那个感觉是错误的! 必须有更好的办法,我知道你们中有些人可以知道它! 有了这些信息,我开始思考deferred.reject和deferred.resolve是甚么意思呢? 这是否意味着要捕捉exception? 我真的应该手动通过所有的错误情况,并调用他们的deferred.reject? […]

水平缩放在服务器之间共享input的应用程序

我正在构build一个应用程序,通过websocket接受input,这个input必须共享回其他可能连接到其他前端服务器的客户端。 为了简单想象一个多用户多房间聊天应用程序。 让input路由到正确的连接不是一个问题,它是服务器之间的消息传递,并能够扩展并保持消息的延迟。 现在我有一个每个前端连接到的代理程序,然后他们订阅一个队列来查看连接可能需要知道的任何事情。 这样做是为了切断接收来自前端永远不会使用的代理的消息。 不过,我仍然可以获得大约75%到85%的消息从经纪商发回到每个前端。 在旅行中,我正在做消息validation,parsing和任何其他业务逻辑的工作。 在旅途中我循环了本地数组的订阅,并将消息发送到每个订阅的连接。 例如:如果我在11个前端服务器上收到10条消息(总共110条消息 – 10条消息在本地处理,而不是由代理发回)* 0.75乐观预订级别= 75条消息被发送回每个服务器处理。 所以我们有10个本地+75个broker = 85个消息被每个服务器处理一段时间。 现在,我不会有100个每秒100个的前端服务器,也许是两个,但是通过代理程序发回给每个前端服务器的消息似乎会爆炸我通过其他前端服务器收到的更多消息。 代理进程是一个与RabbitMQ和PostgreSQL交谈的小型node.js应用程序。 前端服务器也是node.js应用程序。 我能做什么,或者应该采取不同的措施,以在大批量生产期间保持低延迟? 更新回复用户评论:虽然我期望在队列之间的连接会导致他们的前端服务器订阅,我不认为它是100%的每个服务器的重叠。 最糟糕的情况是,每个前端服务器都必须订阅代理上的每个队列,从而从代理获得100%的消息。 乐观地说,只有大约75%的消息确实需要被发回到任何特定的前端服务器。 itaifrenkel的第二次更新:两个用户发送的消息可能以不同的顺序返回。 只有在延迟非常低的情况下才可以接受,而且只有在发送的消息非常接近时才会发生。 如果它发生的消息秒分开,那么我会说我们有一个延迟和规模的问题。 有一种情况我们需要显示一个历史logging,但是由于我觉得这个问题超出了问题的范围,所以我把这个logging留下了。