解析服务器和长轮询

parse-server and long-polling

我有一个客户拥有一些功能相当有限的定制硬件(就电源和连接而言)和一个自制的后端(IIS + SQL 服务器)解决方案。此设置处理异步类型通信的主要方式之一是通过具有合理超时的长轮询变体。

我正在研究将他们的后端解决方案与解析服务器切换出去的可能性,我很好奇是否有人有使用解析服务器处理长轮询请求的经验或见解。特别是,我很好奇是否有可能使用 Cloud Code 实现长轮询(我的猜测是可能的),以及它是否是关于资源和性能的可行途径。

我想这会很好,看看其他人写的关于 Node JS 在保持开放连接时的​​效率,但我很想听听任何了解此事的人的意见。

所以我创建了一个简单的测试来查看解析服务器如何处理长轮询。我创建了一个 Cloud Code 端点,它在返回之前将连接保持打开状态 30 秒:

async function sleep(seconds) 
{
    var millisecondsToWait = seconds * 1000
    return new Promise(resolve => setTimeout(resolve, millisecondsToWait));
}

Parse.Cloud.define('test', async function (req) {
    await sleep(30)
    return 'Hi'
})

我写了一个 bash 脚本,它在一个循环的端点触发大量请求:

#!/bin/bash

for i in {0..200}
do
    curl -X POST -H 'X-Parse-Application-Id: myapp' -H 'X-Parse-REST-API-Key: someString' -H 'Content-Type: application/json' http://localhost:5050/parse/functions/test &
done

结果表明解析服务器没有任何长轮询问题。节点进程的资源使用在测试过程中没有明显变化。

因此,万一将来有人发现自己有这种需求,您应该是安全的。