Погружаюсь в прекрасную технологию вебсокетов, неведомую мне до сих пор. Очень она чудна, должен сказать.
Взял хелловорлд, обрезав до того, что мне нужно, и вот что получил:
1. открываю браузер, тот делает соединение с сервером, и дальше ждёт "обновлений" от него (собственно, зачем ws и были нужны). Сервер, соответственно, список соединений кладёт в MVar, там их и держит.
2. curl'ом дёргаю некоторую штуку (POST-запрос на /api/something/), которая должна, по идее, повлечь за собой отсыл всем слушающим, собственно, сообщения в веб-сокет.
В результате эта херня прямо туда же в curl делает броадкаст, ещё и в перемешку с обычным его запросом. Всё разваливается, браузер ничего не видит.
Долго думал, в общем. Уже расстроился даже, но вдруг пришло в голову объяснение. Поскольку, в отличии от хеллоуворлда, мне (серверу) не интересно слушать что там "кукарекает" ему браузер -- я не делаю бесконечный цикл приёма сообщений, в результате, по видимому, сокет этого вебсокета закрывается, а вместо него, с таким же int-идентификатором открывается сокет, по которому запрашивает curl, в результате ему всё и сыпется.
Короче REST наше всё, буду вебсокеты по самому минимому использовать, а то ну его подобные артефакты.