-2
同事!Golang http.HandleFunc:处理查询
实施例的代码是标准:
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以防止多任务?只有一个请求调用函数。如果任何功能仍然有效,则另一个请求将随着消息发送给客户端以稍后尝试。
你必须做你所描述的。没有内置的方法来做到这一点 - 甚至没有内置的方法来确定它是否是相同的用户。尝试实施,如果遇到问题,请发布有关该问题的问题。 – Adrian