Облачная платформа для чатов в мобильных приложениях


    Чат в приложении или игре – актуальная тема во все времена. Создано огромное количество всевозможных решений для их реализации, в т.ч. на основе стандарта XMPP. Однако все они, на мой взгляд, имеют достаточно высокий порог входа: требуется вникание в клиентский API, особенности настройки и поддержки сервера.

    В случае с мобильными приложениями все еще хуже – простых в использовании решений, адаптированных под их особенности, нет. Наша команда в последний год в i-Free занимается разработкой мессенджера Salut (salut.im), который, к сожалению, пока не стал конкурентом для всем известных WhatsApp, Viber и проч. Тем не менее, в ходе работы над ним мы прошли очень интересный путь, и теперь многое знаем и умеем в разработке обмена сообщениями на мобильных устройствах. Созданный нами серверный бекенд оказался весьма производительным, надежным и масштабируемым, а клиент-серверный протокол – простым в реализации на клиенте. Поэтому мы решили сделать сервис Salut Cloud, который позволит разработчикам мобильных игр и приложений быстро, в течение нескольких часов, создавать в своем приложении полнофункциональные чаты.В этой статье я изложу концепцию нашего сервиса и прошу хабровчан дополнить его своими пожеланиями – что бы вам хотелось в нем увидеть.

    Что такое Salut Cloud?

    Мы видим Salut Cloud коммуникационной платформой для быстрого создания чатов в мобильных играх и Web-приложениях. А началось все с того, что другой проект в компании начал использовать наш бэкенд для реализации чатов в своем продукте – им это оказалось проще, чем строить свой велосипед.

    Для кого это?

    Наш сервис предназначен для всех, кто хочет быстро реализовать в своем продукте современный надежный чат, сократить издержки на создание и поддержку серверной инфраструктуры и быстрее вывести свой продукт на рынок, минимизировав при этом технические риски. В качестве примера приложений, в которых будет полезен наш сервис можно привести игры, в которых есть потребность создания чатов (p2p, клановые чаты, чаты локаций), приложения знакомств и т.д.

    Зачем мне использовать Salut Cloud, если я и сам могу сделать чаты в своем приложении?

    Создание системы обмена сообщениями в приложении — это, зачастую, трудоемкий процесс, таящий в себе много рисков. Отдельный вопрос: организация и поддержка надежного хостинга, который сможет выдерживать нагрузки при росте аудитории. Например, бэкенд упомянутого выше мессенджера Salut, на технологиях которого создана инфраструктура Salut Cloud, состоит из 12 серверов и обеспечивает обработку до 8 тысяч сообщений в секунду. Таким образом, использование нашего решения позволит свести трудозатраты и финансовые затраты на реализацию обмена сообщениями к минимуму и уделить больше внимания основной функциональности продукта.

    Что именно можно сделать с помощью подобного сервиса?

    Можно создать в своем приложении или игре (мобильной или web) полнофункциональный обмен сообщеними, который будет включать в себя:
    • Чаты с различными видами контента: видеочаты, аудиочаты, текст, фото и любой другой контент пользователя;
    • Предоставление информации о статусе доставки сообщения;
    • Групповые чаты;
    • Гарантированная отложенная доставка сообщений с поддержкой push-нотификаций Google и Apple.
    При этом техподдержка и контроль работоспособности сервиса будут осуществляться в режиме 24*7.

    Зачем использовать Salut Cloud, когда есть mBaas решения?

    Мы видим свое решение как платформу для создания чатов. Если разработчику нужны только чаты и не требуется весь функционал mBaaS, будет намного проще использовать Salut Cloud. Мы реализовали крайне низкий порог вхождения — подключить наш сервис просто, для этого не надо разбираться в куче документации и серфить по вкладкам в личном кабинете. Для примера, наш iOS SDK содержит всего около десяти методов, включая идентификацию пользователя, администрирование групповых чатов, заливку кастомного контента сообщений и, собственно, сами методы работы с сообщениями. Чтобы подключиться к сервису достаточно будет получить API-ключ на сайте.

    Как это работает?

    В основе инфраструктуры лежит высокопроизводительное решение на базе HTTP-сервера на Эрланге, которое осуществляет обмен сообщениями через интерфейс web-советов, а также бизнес логика node.js, реализующая обработку сообщений, рассылку статусов доставки и пуш-нотификаций, управление групповыми чатами. Взаимодействие между HTTP-сервером и логикой node.js осуществляется через очереди RabbitMQ, что позволяет масштабировать все части нашей инфраструктуры независимо друг от друга в зависимости от текущей нагрузки. Доступ к возможностям системы осуществляется с помощью SDK, встраиваемого в игру или приложение.
    Как я уже сказал, обмен данными между SDK и инфраструктурой Salut Cloud осуществляется посредством протокола web-sockets, что позволяет обеспечить доступ SDK к инфраструктуре через HTTP/HTTPS-соединение.

    Бесплатный доступ к сервису

    Для всех разработчиков будет доступен бесплатный базовый тариф, включающий лимит на количество одновременных соединений. Этот лимит будет достаточным не только для отладки приложения, но и для финальных релизов, рассчитанных на относительно небольшую (до нескольких десятков тысяч человек) аудиторию. При превышении базового тарифа будет предлагаться переход на платный тарифный план. Мы ожидаем, что его минимальная стоимость будет около $100-$150 в месяц.

    Какие платформы поддерживает Salut Cloud?

    На настоящий момент уже готовы прототипы SDK для Android и iOS, а также JavaScript-клиент для Web-приложений. Мы готовы к запросам на портирование SDK на другие платформы: Windows Phone, Unity (C#), PC и т.д.

    Когда сервис станет доступным?

    Мы планируем открыть Salut Cloud для публики летом 2014, но уже сейчас его можно потестировать в своих продуктах

    Как опробовать прототип SDK

    Цель этой публикации – рассказать о своей идее и собрать ваши предложения и конструктивную критику. Все, кто заинтересован в большей информации о возможностях SDK и хочет принять участие в бета-тестировании сервиса — пишите в комменты или на hi@salut.im
    i-Free Group
    0,00
    Компания
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 13

      0
      1. Что по факту произойдет у игроков при превышении лимита на базовом тарифе? Сообщения нельзя будет отправлять?
      2. В каком виде вы предоставляете JavaScript-клиент? Это серия запросов для REST API или набор из скриптов и верстки? Возможно ли их кастомизировать?
      3. У вас есть какие-либо механизмы шифрования / защиты переписки?
        0
        1. При превышении лимита придет алерт с предложением перейти на платный тариф, через несколько дней будет заблокирована отправка сообщений
        2. По факту это набор скриптов без верстки, включая библиотеку web sockets. А как и для чего хотелось бы их кастомизировать?
        3. Пока таких механизмов нет, но идея хорошая — подумаем над реализацией.
          0
          собственно, забыл уточнить важный момент про защиту переписки — обмен с сервером идет с использованием SSL. Поэтому на сетевом уровне переписка защищена. Но дополнительного шифрования пользовательских данных — этого пока нет.
        +1
        Недавно искал подобный сервис, не нашёл.

        Напишу свои требования, вдруг кому будет интересно.
        1) Реально низкий порог вхождения. В идеале Init(appKey), Subscribe(channel) и колбэк OnMessage(channel, message). Все остальные навороты, в том числе и авторизацию, сделать опциональными.
        2) Надёжность клиентской библиотеки. К примеру, отправляемые сообщения не должны теряться при дисконнекте или нормальном выключении приложения. Наличие SDK для мобильных платформ (iOS, Android, Win8).
        3) Возможность задавать максимальное время хранения на сервере для отдельных сообщений. При TTL = 0 сообщения получают только те, кто онлайн в данный момент. Это нужно хотя бы для пингов и подобных сообщений.
          0
          Хм, если я правильно вас понял, то pusher.com и pubnub.com как раз для этого и существуют. Вписываешь appKey, подписываешся на канал и ждешь сообщений.

          Конечно там нет протокола обмена изображениями, эмоций и т.д., но это не сложно делается и получается более гибко, когда сервис передает лишь сообщения (можно сделать свой простой протокол, например, на основе JSON).

          Оба сервиса поддерживают WebSocket, online-статусы (кто в сети на канале). На канал может подписатся как 1 человек (приватная комната), так и много (групповой чат).

          В общем то они заявляют, что их сервисы подходят не только для чатов и приложений в реальном времени, но даже для мультиплеерных игр.
            0
            Если я не путаю, то оба этих сервиса не хранят сообщения на сервере для оффлайновых пользователей. Вы можете отправить сообщение в «канал», и его получат те, кто онлайн, но те, кто оффлайн это сообщение не получат.
            Там также есть возможность хранить историю сообщений — вновь подключившиеся юзеры могут посмотреть, что они «пропустили», но это всё не то, да и ненадёжно.

            Есть сервисы другого плана — например, Amazon SQS — хранят сообщения до тех пор, пока их кто-нибудь не получит, но там нет возможности отправлять сообщения только онлайн пользователям (ping).
            0
            Спасибо за отклик! Мы как раз стараемся сделать SDK максимально простым для интеграции — оно примерно так и выглядит, как вы описали. В ближайшее время опубликуем документацию на сайте cloud.salut.im
            По поводу введения TTL — будем делать обязательно, у разных приложения свои требования к обеспечению отложенной доставки.
            0
            Сервис нужный, но пока нет хотябы примерных тарифов и документации, что-либо сказать сложно.

            Для своего проекта ищу что-то похожее, пока не нашёл.
              0
              По тарифам: будет бесплатный базовый тариф для отладки и релиза приложений с небольшой аудиторией с лимитом по количество одновременных соединений. При его превышении будет предлагаться переход на платный тарифный план с минимальной стоимостью от $100-$150 в месяц.
              Документацию мы опубликуем в ближайшее время на нашем сайте — cloud.salut.im
              +1
              Скажите пожалуйста, чем ваш сервис, помимо протокола, отличается от известных решений pusher.com и pubnub.com?
                0
                Мы предоставляем готовое решение для встройки пользовательского чата, в то время как эти два сервиса скорее дают решения для транспорта событий на прикладном уровне, поверх которого надо будет строить свой чат. В этом плане наше решение, хоть и более узкое фукнционально, но за счет этого же и проще.
                Кроме этого, могу ошибаться, но не уверен, что у них обоих есть возможности по передаче кастомного контента, включая аудио и видео.
                  0
                  Спасибо за ответ. Вы правы, у них нет передачи аудио, видео и картинок, они просто передают сообщения в текстовом виде.
                0
                Расскажите, если возможно, как у вас технически организованы аудиочаты / видеочаты? Аудио/видео поток передается p2p или через ваш сервер? Сколько человек может одновременно участвовать в видео чате?

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                Самое читаемое