我有一个通过golang创建的api,它返回了
的结果{
id : drone4
item_parameter : {
altitude : 20,
longitude : 10.20
latitude : 24.5
}
作为json结果,但在代码中使用 调用go func()进行处理的go例程 grpc-server golang的结果
喜欢
go func() {
fmt.Print("start getPosition loop")
for {
msg, err := stream.Recv() // msg UAVPosition
if err == io.EOF {
// read done.
fmt.Print("start getPosition loop closed")
close(position)
return
}
if err != nil {
log.Fatalf("Failed to receive getPosition : %v", err)
close(position)
return
}
log.Printf("Position point[%s](%f, %f, %f)", uavID.Aircraft, msg.Latitude, msg.Longitude, msg.Altitude)
itemParameter := models.ItemParameter{
Latitude: msg.Latitude,
Longitude: msg.Longitude,
Altitude: msg.Altitude,
}
position <- models.DronePosition{
Name: uavID.Aircraft,
ItemParameter: itemParameter,
}
}
}()
我需要获取我使用此通道的位置值
position := make(chan models.DronePosition)
如果有机会,如何使用go将结果流式传输到ui? 任何建议如何在ui中以这种流方式工作?
答案 0 :(得分:3)
如果我正确理解您->这是服务器grpc端点,您的问题是如何将models.DronePosition
发送回客户端。如果是这样,则您具有双向流传输,则可以通过以下方式解决此问题:
dronePosition := models.DronePosition{
Name: uavID.Aircraft,
ItemParameter: itemParameter,
}
position <- dronePosition
err = stream.Send(&dronePosition)
并且在客户端上应该有相应的更新以支持双向数据流