抱歉,如果这是一个菜鸟问题,我是 grpc 的服务器端流媒体的新手。我现在在流向客户端的服务器上的功能中拥有什么req, err := http.NewRequest("GET", actualURL, nil)//跳过一些行// res, _ := http.DefaultClient.Do(req)// closing bodydefer res.Body.Close()body, err := ioutil.ReadAll(res.Body)// 跳过一些行//// unmarshaling the xml data received from the GET request done abovexmlDataErr := xml.Unmarshal(body, &ArrData)// creating a variable of a custom type and creating object of specific struct Flightvar flightArrData ArrFlightscurrArrData := flightArrData.Arr.Body.Flightlog.Println("计算要发送到客户端的总行数", len(currArrData))// 循环响应并将其发送到客户端对于 i := range currArrData { farr := &pb.FlightArrivalsResponse{ ArrivalResponse: &pb.ArrivalFlightData{ Hapt: currArrData[i].HApt, Fltnr: currArrData[i].Fltnr, Sdt: currArrData[i].Sdt, Acreg: currArrData[i].Acreg, Park: currArrData[i].Park, EstD: currArrData[i].EstD, Gate: currArrData[i].Gate, AblkD: currArrData[i].AblkD, ActD: currArrData[i].ActD, Callsign: currArrData[i].Callsign, }, } senderr := stream.Send(farr) // skipping some lines //}// 完成后返回 nil return nil }我面临的问题 在客户端我有接收此响应的功能,休眠 n 分钟并再次请求响应。客户在第一次通话中确实得到了预期的响应,但是对于每个后续通话都会发生一些奇怪的事情,这是我当前的问题,我尝试以下面每个后续通话的形式进行说明:从客户端调用 1 到服务器 --> 服务器返回 200 行客户睡眠 n 分钟从客户端调用 2 到服务器 --> 服务器返回 400 行!!(基本上每行是 200 + 200 的两倍)客户睡眠 n 分钟从客户端调用 3 到服务器 --> 服务器返回 600 行!!(200+200+200)
1 回答
交互式爱情
TA贡献1712条经验 获得超3个赞
我添加了以下几行 var emptyArrData ArrFlights
,这基本上是完整的 XML 结构,并将这个 emptyArrData 分配给该结构flightArrData = emptyArrData
- 1 回答
- 0 关注
- 143 浏览
添加回答
举报
0/150
提交
取消