我一直在调查,NSProgress但发现现有的文档,课程参考和教程缺乏.我主要想知道我的NSProgress是否适用于我的用例.类引用文档或者引用suboperations或者subtasks,我可能会弄错,但我解释suboperations为NSOperation管理一组其他的情况NSOperations.我的用例的一个例子如下:
Upload All Items in Group为存在的每个组创建操作.NSOperationQueue.Upload All Items in Group操作都将Upload Item为其组中的每个项目创建一个操作.这些都被添加到NSOperationQueue由操作管理的中.我本来希望NSProgress支持这一点,并允许我将进度从嵌套操作(Upload Item操作)传播到父操作,然后最终传播到主线程和UI.但是我很难实现这一点,似乎NSProgress对于在一个后台线程上执行所有代码的长操作意味着更多,但是有单独的"部分"可以很容易地确定何时进行了进展,如果这是在这种情况下,使用该术语suboperation有点误导,因为它会让人联想到嵌套的使用NSOperations.
感谢您提供的任何帮助,如果需要其他详细信息,请与我们联系.
multithreading objective-c nsoperation nsoperationqueue nsprogress
我有一个 Node.js 服务器,我正在向其发送 Web 套接字升级请求。此请求的授权标头包含登录信息,我需要将其与数据库条目进行比较。我不确定如何阻止 Web 套接字连接打开,直到执行数据库查询回调之后。
以下是我目前正在做的事情的简化:
var Express = require('express')
var app = Express()
server = app.listen(app.get("port"), function () {})
server.on("upgrade", function (request, socket) {
//Query database
//On success set "authenticated" flag on request (later accessed through socket.upgradeReq)
//On failure abort connection
})
Run Code Online (Sandbox Code Playgroud)
这是可行的,但有一段短暂的时间,套接字处于打开状态,但我尚未验证授权标头,因此恶意用户可能会发送/接收数据。我通过使用“经过身份验证”标志来减轻实施中的这种风险,但似乎必须有更好的方法。
我尝试了以下操作,但是虽然它们似乎拦截了除升级请求之外的所有请求:
Attempt #1:
app.use(function (request, response, next) {
//Query database, only call next if authenticated
next()
})
Attempt #2:
app.all("*", function (request, response, next) {
//Query database, only call next if authenticated
next()
}) …Run Code Online (Sandbox Code Playgroud)