抱歉,如果这是一个菜鸟问题,我是 grpc 的服务器端流媒体的新手。
我现在在流向客户端的服务器上的功能中拥有什么
req, err := http.NewRequest("GET", actualURL, nil)
//跳过一些行// res, _ := http.DefaultClient.Do(req)
// closing body
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
// 跳过一些行//
// unmarshaling the xml data received from the GET request done above
xmlDataErr := xml.Unmarshal(body, &ArrData)
// creating a variable of a custom type and creating object of specific struct Flight
var flightArrData ArrFlights
currArrData := flightArrData.Arr.Body.Flight
log.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)
交互式爱情
相关分类