我正在尝试使用带有gRPC api的dart(flutter)客户端和python服务器进行实时图像分析。如何在gRPC中使用dart-client设置异步图像流?(例如websockets)
答案 0 :(得分:1)
这是一个很大的话题,但是您要求使用dart客户端,因此我假设您有一个看起来像this的“ .proto ”文件和一个有效的python-服务器。
如果要将dart-client连接到异步流,则必须像这样进行somithing。
typedef FrameStreameCallback = Function(Frame);
ResponseStream<Frame> _frameStream;
void getFrames(FrameStreameCallback cb) {
FrameRequest req = new FrameRequest();
//Set data of req and so on...
_frameStream = _stub.FrameStreamer(req);
_frameStream.listen((Frame newFrame) {
//Send callback when a new Frame is received
cb(newFrame);
});
_messageStream.handleError((onError) {
print("An error occured in frame stream " + onError);
});
}
然后您像这样调用此方法:
obj.getFrames((Frame f){
print("New Frame received" + f.toString());
});
答案 1 :(得分:0)
您的问题范围太大。您必须决定要流式传输的内容,是否要流式传输一个图像帧?请记住,如果您希望每条消息发送超过1MB的内存,则gRPC提倡重新设计系统或使用其他功能。
我对dart并不熟悉,但是假设您需要将图像流传输到运行dart的客户端,则可以让客户端向python服务器发送请求,然后让python服务器将帧流回。原型可能看起来像这样:
service FrameService {
rpc FrameStreamer(FrameRequest) returns (stream Frame) {}
}
message FrameRequest {
//empty
}
message Frame {
//put your data in here, perhaps bytes?
//or an frame id, etc.
}