Я создаю простой Slackbot в качестве опыта работы с Go, и у меня возникла первая проблема: я не могу отправить сообщение обратно в соединение!
Вот моя основная функция:
func main() {
conn, botId, err := slackInit(os.Getenv("SLACKBOT_TOKEN"))
if err != nil { return }
defer conn.Close()
for {
_, event, err := conn.ReadMessage()
if err != nil {
fmt.Println("Error processing message:", err)
return
}
fmt.Println(string(event))
message, err := slackGetMessage(event)
if strings.Contains(message, botId) {
fmt.Println("Bot was mentioned!")
resp := []byte("You talkin' to me?")
err = conn.WriteMessage(1, resp)
if err != nil {
fmt.Println("Error writing message:", string(resp))
return
}
}
}
}
Это прослушивает и сообщает о событиях без проблем, но терпит неудачу, как только вызывается метод conn.WriteMessage
. Я получаю фатальную ошибку от websocket
с кодом 1006 и сообщением «неожиданное закрытие».
Я использую Gorilla для своей библиотеки websocket и подозреваю, что, возможно, это проблема параллелизма, связанная с их ограничением «один читатель, один писатель». Я пробовал несколько настроек, но, честно говоря, просто не знаю достаточно о языке / библиотеке, чтобы по-настоящему погрузиться в отладку. : - /
Я уверен, что упускаю здесь что-то очевидное! Какие-нибудь советы по управлению моим Writer, чтобы мой бот отвечал? Спасибо!
You talkin' to me?
). - person Cerise Limón   schedule 10.12.2016