Фух, запилил чатик. Нашел, кстати, альтернативу - sockjs. Также для нее есть sockjs-tornado.
В общем, когда я уже отчаялся найти решение прочитаных сообщений и решил пилить все через опрос я подумал, а чего мне не совместить оба описаных выше подхода. В результате я отправляю сообщение POST запросом. В view инкрементирую счетчик непрочитаных сообщений и публикую сообщение на канале userId_threadId (Redis). Также написал view markAsRead, который вызываю в view получения списка сообщений и в которой устанавливаю в сообщении флажок isRead и уменьшаю счетчик непрочитаных сообщений и пебликую сообщение, что thread считается прочитаным на userId_threadId. Теперь об интересном, как сообщения приходят к пользователю. Я установил себе sockjs-tornado. После загрузки страници, если есть threadId (тоесть есть хоть одно сообщение) я подключаюсь к серверу. Авторизацию по кукам там сделать нельзя, посему первым сообщением на сервер идет словарь с userId и threadId. Если хоть одно сообщение есть в базе - подписываемся на канал userId_threadId, и если приходит сообщение - отправляем его пользователю и дергаем markAsRead, если приходит сообщение о том, что сообщение прочитали - просто отправляем пользователю. Небольшые трудности возникли с счетчиком непрочитаных сообщений. Когда загружалася страница с сообщениями, сначала она собственно загружалася, а потом отправлялся запрос на получение сообщений и счетчик уменьшался. Пришлось передавать с списком сообщений и кол-во непрочитаных и обновлять счетчик на клиенте.
Сейчас пишу удаление. Просто удалять не хочу, ибо от случайного клика никто не застрахован. Выбрасывать диалоговое окно - так можно задолбаться подтверждать. Наверное буду просто помечать прочитаным (сейчас впринципе так и есть. 2 флага: удален отправителем, и получателем), т.е. даже если оба флага установлены удалять не буду, и на месте удаленного сообщения сделаю кнопку "восстановить". Напишу команду, которую буду запускать cron-ом и зачищать такие сообщения. Конечно возможна ситуация, что кто-то удалит и в этот момент отработает скрипт, и восстановить уже не получится, но решать это мне влом, по идее если поставить на 4 утра вероятнось этого не большая.
Вот касательно удаления диалогов - ХЗ. Такой подход тут не катит. Пока что остается ток диалоговое окно.
Короче вот так я все сделал, надеюсь было интересно:) Если есть предложения касательно проблемы удаления надеюсь вы мне поможите:)