LINUX.ORG.RU

Rails & WebSocket

 , ,


0

2

Есть Rails-приложение с базой пользователей, нужно добавить возможность пользователю создавать «комнаты» и передавать JSON-ы всем участникам в реалтайме. Не совсем чат (совсем не чат), но смысл тот же. Естественное решение это использование вебсокетов, но, при поверхностном изучении проблемы, выяснилось что у Rails наблюдаются пробелы в этой области.
По крайней мере, существует два варианта готовой реализации - faye и socky. Я пробовал faye, но у него оказались какие то проблемы с авторизацией в каналах, на которые подписан пользователь. Грубо говоря, каждый канал биндится к конкретному контроллеру, и все пользователи, подписанные на канал спамят в этот канал. Иными словами, я так и не понял, как разделить этот канал на комнаты, что бы пользователь получал, только нужные ему JSON-ы. Единственный пример с faye, где допускается «приватная» передача, в обход основного канала, выглядит как костыль, и разруливается на уровне JS, а точнее регулярками, т.е. парсится на уровне сообщения. Понятное дело, что это вообще не вариант. Как самостоятельно разрулить это дело на уровне Rail, кроме как условного рендеринга партиалов, я так и не придумал.
Что может посоветовать LOR-сообщество?

★★★★

Взять NodeJS/Socket.IO и решить задачу. Ruby/Rails не про веб-сокеты пока. Для каждой задачи свой инструмент. Несмотря на то что в Rails5 будет ActionCable, я думаю сильно это картину не изменит.

abc ()
Ответ на: комментарий от abc

Взять NodeJS/Socket.IO

Если говорить о смене платформы, уж лучше взять спринг с нормально реализованными вебсокетами.

Для каждой задачи свой инструмент

Не понимаю, что такого необычного в данной задаче для 2015г.

comp00 ★★★★ ()
Ответ на: комментарий от S-Mage

action_cable

Первый раз о нем слышу, но легкий гугл показал, что он и доступен для Rails 4. В чем проблема использовать его сейчас?

comp00 ★★★★ ()
Ответ на: комментарий от comp00

Если говорить о смене платформы, уж лучше взять Go с нормально реализованными вебсокетами.

Пофиксил.

Deleted ()
Ответ на: комментарий от comp00

Не знаю. Я не использовал, но позиционируется как фича rails 5. Наверное, затолкают прямо в рельсу. Попробуй, расскажешь.

S-Mage ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.