go - 向客户端发送多个响应

标签 go

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

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

我一直在想,也许我可以每 5-10 秒发送一次新的更新请求,但这似乎效率不高,而且它不允许我停止我开始使用 go 的进程mySlowFunc()

最佳答案

您可以为慢速函数创建一些“守卫”。他们限制执行时间,函数在这段时间内成功返回结果,如果没有 - 返回默认值并取消函数。

代码示例:

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

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

关于go - 向客户端发送多个响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47873964/

相关文章:

go - 来自 Go 编程语言的 Gif 生成练习创建损坏的文件

go - 我可以使用 autocert 的动态主机策略吗?

go - 使用 'go run' 将 CLI 参数传递给可执行文件

arrays - 戈朗 : unsafe dynamic byte array

reference - 另一种类型中自定义类型的 Golang slice 作为引用

amazon-web-services - k8s 使用 OwnerRef 获取集群中的所有 pod 层次结构

go - Go 中的 len(string) 和 len(slice) 的 O(1) 运算吗?

json - Go 中的面向对象 - 结构/组合/封装

go - 如何在 gonum 中将矩阵与向量相乘?

go - 将字符串转换为自定义结构 Go