Задать вопрос
Coder89
@Coder89
Software Engineer

Какие технологии выбрать для написания чата?

Всем привет!

Есть веб-приложение написанное на Rails. В ближайшее время планируется его развитие — разработка мобильного приложения в дополнение и API, которое так же будет на Ruby.
Одна из новых фич сервиса — чат, в котором юзеры смогут общаться как из веб-интерфейса, так и из мобильного приложения.

На чем бы вы писали подобный чат и почему? Я с интересом смотрю на Clojure, Erlang, Node.js
  • Вопрос задан
  • 5205 просмотров
Подписаться 4 Оценить 3 комментария
Пригласить эксперта
Ответы на вопрос 9
witbier
@witbier
Web Sockets. Они созданы для чатов ^)
Ответ написан
Комментировать
alekciy
@alekciy
Вёбных дел мастер
Erlang в помощь. Именно из-за ejabberd. Хорошее устоявшиеся решение под которое написано в том числе и JavaScript чат. Что не исключает использование дескстопных клиентов. Имхо, получается довольно гибко + достаточно независимо от основного приложения.

P.S. Яндекс в свое время выбрал erlang ;)
Ответ написан
5HT
@5HT
Erlang
Пример чата на Вебсокетах под Erlang:

event(chat) -> wf:send(chat, wf:q(message)),

body() ->
    wf:async(fun() -> loop() end,chat),
  [ #panel{id=history}, #textbox{id=message}, #button{postback=chat}].

loop() ->
    receive
         Message ->
             wf:insert_bottom(history, #span{text=Message}),
             wf:flush()
    end,
    loop().


Полный пример можно посмотреть здесь:
https://github.com/5HT/n2o/tree/master/samples
Ответ написан
Комментировать
MpaK999
@MpaK999
Буду!
Почему бы не сделать на Rails или Sinatra если RoR кажется тяжелым будет.
Ответ написан
Комментировать
trueClearThinker
@trueClearThinker
Для node.js есть такая прекрасная штука, как Socket.io (есть реализация на Erlang) — клиент-серверная библиотека.
Ответ написан
romeo_ordos
@romeo_ordos
Я бы выбрал Node.JS. Очень легок в разработке. В качестве демки они изначально чат делали. Посмотреть можно здесь. Исходный код прилагается.
Ответ написан
Комментировать
FanKiLL
@FanKiLL
netty.io
Ответ написан
Комментировать
voidnugget
@voidnugget
Программист-прагматик
Если вы упоротый рубист, стоит реализовать сервер на основе
faye/faye-websocket-ruby или imanel/websocket-ruby с воркерами на sidekiq. В качестве окружения я лично предпочитаю JRuby. Ещё я видал как люди гоняли рубисткий sock.js. Я даже не представляю почему у него популярность ниже того же socket.io, а поддержка в разы лучше.

Также обязательно нужно написать fallback на Server-sent events и long polling.
Хотя можно вообще на заморачиваться с websocket'aми - его может будет достаточно, и для чатов с большим количеством народу производительность у него будет выше чем у Websocket'ов.

А так, в соседней вселенной, я обычно использую Vert.x и местный sock.js с откатом на sse.
Ответ написан
Комментировать
@eliastro
Если нужно быстрое, но при этом производительное решение - посмотрите anycable. Это переделанный рельсовый action cable на golang, который с легкостью интегрируется в рельсы, заменяя action cable. В итоге ты используешь все плюшки руби-мира и при этом имеешь производительность golang под капотом.
https://anycable.io/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы