- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在编写一个基于 Facebook 的 Proxygen 的 HTTP 视频流服务器。没有寻求计划。使用 proxygen::ResponseBuilder
我能够发送 webm 编码视频 block 作为 HTTP 响应,即分块传输编码正在工作。我的问题是,Proxygen 在发送响应 header 之前等待 proxygen::ResponseBuilder::sendWithEOM()
。我希望它在每次调用 proxygen::ResponseBuilder::send()
后尽快发送数据。
我尝试使用 evb->runInLoop()
和 evb->runInEventBaseThread()
从 EventBaseThread 执行的 lambda 运行 ResponseBuilder 调用
using namespace folly;
using namespace proxygen;
std::thread t([&](){
EventBase* evb = EventBaseManager::get()->getExistingEventBase();
// send headers ...
while ( chunks avail. ) {
//...
evb->runInLoop([&](){
ResponseBuilder(downstream_)
.body(std::move(chunk))
.send();
});
//...
}
// sendWithEOM ...
});
t.detach();
此代码是从我的 RequestHandler
的 onRequest()
方法调用的。我尝试调用 ResponseBuilder::send()
而不将其包装到 evb->runInLoop()
中,但是 Proxygen v0.25.0 和 Folly v0.42.0 禁止调用 ResponseBuilder::send()
来自另一个使用断言的线程。我从这里删除了这个断言:https://github.com/facebook/folly/blob/v0.42.0/folly/io/async/EventBase.cpp#L491 .
现在模拟流可以正常工作,但如果有并行请求,它就会崩溃。我想它不应该像这样使用,这就是断言的目的。但也许有人知道如何为我的用例正确使用 Proxygen 基础设施?
最佳答案
同样的问题。我用这样的东西让它工作。
folly::EventBase* eventBase = folly::EventBaseManager::get()->getExistingEventBase();
thread t([&, eventBase]() {
while( chunks exist ) {
auto chunk = getChunk();
eventBase->runInEventBaseThread([&, chunk=chunk]() mutable {
ResponseBuilder(downstream_).body(move(chunk)).send();
});
}
});
// sendWithEOM ...
t.detach();
关于facebook - 如何使用 Proxygen 和 Folly 发送 HTTP 分块响应来模拟视频流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30847200/
当我想通过 xcode 运行应用程序时遇到了这个问题 仅显示所有错误/Users/ugur/Documents/Projects/MyApp/node_modules/react-native/Rea
我正在查看 react native 项目的源代码,但在构建它时遇到了问题。 运行以下命令后 npm install在项目的根目录 pod install在ios文件夹 我在终端收到以下消息: sh:
这是来自 Facebook Folly 库的 AccessSpreader 代码: https://github.com/facebook/folly/blob/master/folly/concur
我已经使用下面给出的以下链接构建了 facebook folly 库 https://github.com/facebook/folly #include #include #include #
我正在尝试编写一个玩具示例来使用 Facebook 的 Folly library .程序引入如下: #include #include #include #include #include
我的 React Native 项目在 Xcode 上遇到构建失败。错误是 'folly/Portability.h' file not found 过去几天我一直在尝试自己解决这个问题,但无法解决。
我一直在尝试为新的 ios 运行但一直收到此错误 ** BUILD FAILED ** The following build commands failed: CompileC /U
我正在尝试构建 folly 库,这是一个 C++ 库,并尝试通过 vcpkg 安装它。 它下载了所有依赖项并安装了依赖的 boost 库。 但它在安装 folly 的最后一步给出了错误。 我使用了以下
以下程序: #include #include #include #include class foo { }; std::ostream& operator(foo{}); std::c
众所周知,如果我们将元素 push_back 到 std::vector<> , 如果 vector 中分配的整个内存都被占用,则 std::vector<>保留当前内存大小的 2 倍(分配 2
在试图理解如何处理无锁代码的过程中,我尝试编写一个单一消费者/单一生产者无锁队列。一如既往,我检查了论文、文章和代码,特别是考虑到这是一个有点微妙的主题。 所以,我在 Folly 库中偶然发现了这个数
我正在编写一个基于 Facebook 的 Proxygen 的 HTTP 视频流服务器。没有寻求计划。使用 proxygen::ResponseBuilder 我能够发送 webm 编码视频 bloc
将部分实现分离到单独的 .h/.cpp 文件中的原因是什么?我知道更改 header 会强制重新编译,但是将实现移至单独的 .cpp 有什么好处? Facebook 用 Folly 做到了这一点 ht
我正在尝试构建和运行一个使用 Folly 的小型示例应用程序在 OS X Yosemite 上使用 GCC 4.9.3。这是源代码: #include int main() { folly:
我正在使用 Mac M1,试图在 IOS 模拟器上运行 React Native,但我收到了这个错误: CompileC /Users/jack/Library/Developer/Xcode/Der
我想为我的 iOS React Native 项目启用 Hermes,但出现下一个错误: In file included from ../ios/Pods/RCT-Folly/folly/Singl
当我想为生产环境编译我的 IOS 应用程序时,出现以下错误:'folly/Portability.h' file not found and echo 'error:this File .../mai
我是一名优秀的程序员,十分优秀!