gpt4 book ai didi

http - Golang http.HandleFunc:处理查询

转载 作者:数据小太阳 更新时间:2023-10-29 03:42:20 25 4
gpt4 key购买 nike

同事!

示例代码是标准的:

func echo(w http.ResponseWriter, r *http.Request) {
c, _ := upgrader.Upgrade(w, r, nil)
defer c.Close()
for {
_, message, _ := c.ReadMessage()
log.Printf("recv: %s", message)
if string(message) == "qwerty"{
func (){
fmt.Println("in func 1")
time.Sleep(time.Second * 10) // here method performs some work
}()
}
if string(message) == "asdfg"{
func (){
fmt.Println("in func 2")
time.Sleep(time.Second * 10) // here method performs some work
}()
}

}
}

func main() {

http.HandleFunc("/echo", echo)
log.Println("Socket waiting connection on * : 3000")
log.Fatal(http.ListenAndServe(":3000", nil))

}

真麻烦
对于用户而言,我的应用程序不是多任务的。用户必须请求方法并在系统繁忙时等待。但是,在被调用方法仍然有效的同时,如果同一客户端调用另一种方法,则服务器将缓冲其请求,并且方法2将在前一个方法完成后立即启动。但是,我需要应用程序中的另一种行为:如果任何方法的性能未完成,则客户端必须收到一条消息,即先前的查询仍在进行中,并且必须删除其新查询。如何修改echo func以防止多任务处理?仅一个请求调用功能。如果任何功能仍然有效,则另一个请求会下降,并向客户端发送消息,以便稍后再试。

最佳答案

首先,您有一个无限的for循环,没有任何break子句。

没有 session 或cookie管理的帮助,您不能阻止客户端将后续请求发送到您的服务器。我要做的就是在客户端访问您的服务器时为他们分配cookie,并使其成为访问其他资源所需的cookie。客户端成功发送请求后,更新cookie中的数据以反映当前客户端的后台正在运行进程。由于客户端可能会清除cookie,因此您可能还需要在服务器端进行一些 session 管理。

关于http - Golang http.HandleFunc:处理查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45592087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com