向客户发送多个回复

时间:2017-12-18 17:59:47

标签: go

我有一个Web客户端和一个Go服务器。客户端发送一些json数据,然后处理,然后服务器返回一个json响应。

但是当我想告诉客户一个非常慢的过程的结果,甚至允许客户端停止这个过程时,我该怎么办?

我一直在想也许我可以每隔5-10秒继续发送新的请求以进行更新,但这看起来效率不高,并且它不允许我停止使用{{1}开始的流程}

1 个答案:

答案 0 :(得分:0)

您可以为慢功能创建一些“警卫”。它们限制执行时间,在此期间它们返回结果的函数成功,如果不是 - 返回默认值并取消函数。

代码示例:

select {
case result := <-successChan:
    return result, nil
case <-timeoutChan:
    return "", nil
}

使用示例:https://github.com/lisitsky/go-site-search-string