Настройка существующего обработчика в библиотеке HTTP Go - PullRequest
0 голосов
/ 02 августа 2010

С учетом того, что в библиотеке http определено следующее:

func Handle(pattern string, handler Handler)
type Handler interface { ServeHTTP(*Conn, *Request) }

Как я могу улучшить существующий обработчик (скажем, websocket.Draft75Handler например), задав ему дополнительный аргумент (и скажите ему, что делать с аргументом)?

Я пытаюсь создать обработчик, который содержит в себе один конец канала. Он будет использовать этот канал для общения с какой-то другой частью программы. Как я могу получить этот канал в функцию обработчика?

Извиняюсь, если это глупый вопрос. Я новичок и решил учиться, читая учебник, а затем сразу приступая к написанию кода. Спасибо за любую помощь!

1 Ответ

2 голосов
/ 02 августа 2010

Если тип является функцией, например websocket.Draft75Handler, вы можете заключить его в замыкание:

func MyHandler(arg interface{}) websocket.Draft75Handler {
    return func(c *http.ConnConn) {
        // handle request
    }
}

func main() {
    http.Handle("/echo", MyHandler("argument"))
    err := http.ListenAndServe(":12345", nil)
    if err != nil {
        panic("ListenAndServe: " + err.String())
    }
}
...