Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Chatter — учрежденный на python 2.7 websocket-framework с применением tornado

Anna | 16.06.2014 | нет комментариев
Хочу представить сообществу своё малое творение — Chatter.

Chatter основан на python 2.7, использует tornado.

Имеется готовое API для python (бэкэнд) и для js (фронтэнд)

Примеры и начальный код на github.

Для чего же собственно он был сделан?


Для стремительной и комфортной разработки. Имеется личный «протокол» — обёртка над json.

Конструкция «app» файла:
from chatter import BaseSocketHandler, run_application, Clients

class Example1SocketHandler(BaseSocketHandler):
    #так называемый namespace плана - один сервер может поддерживать несколько неймспейсов единовременно
    group = 'example1'

def main():
    #Tornado-handler'ы
    run_application([
        (r'/example1', Example1SocketHandler),
    ])

if __name__ == '__main__':
    main()
Команды хранятся рядом с app файлов в папке api. Конструкция папки:
  • api/
    • example1/ наш план-неймспейс
      • group/ группа способов
        • method1.py способ 1
        • method2.py способ 2
    • example2/ наш план #2
      • group/ группа способов
        • method1.py способ 1
        • method2.py способ 2

Огромнее ничего не необходимо — при запуске обслуживания папка api будет механически проанализирована на «способы», будет построена древовидная конструкция способов.

Поддерживается динамическое обновление способов (пример в гите — chat).

Файл способа (/api/example1/hello/world.py):
class __api_result__(APIMethod):
        #параметры анализируются механически, порядок не имеет значение - основное "имя" параметра
	def run(self, text1, text2, text3):
		#возвращаем итог - tuple
		#нулевой элемент - dict-параметров
		#первый - success (итог выполнения - True / False)

		return ({'text': [text1, text2, text3]}, True)
А сейчас html-js-часть:
<!DOCTYPE html>
<html>
<head>
    <title>Chatter test</title>
    <meta charset="UTF-8">
    <meta http-equiv="content-type" content="application/xhtml xml; charset=utf-8"/>
    <!-- подключаем chatter.js -->
    <script src="js/vmchatter.js"></script> 
    <script src="http://code.jquery.com/jquery.js"></script>

    <script>
        //Описываем наш класс для работы с сервером. все конструкторы - типовые
        function Example1Chatter(host, port, params)
        {
            //создаем экземпляр chatter'а, на необходимый хост, порт, указывая необходимый "неймспейс"
            this.chatter = new VMChatter(host, port, 'example1', params, this);
        }

        //Добавляем способ, называя его hello
        Example1Chatter.prototype.hello = function(text2, text1, text3, callback)
        {
            //Сам проанализирует параметры, порядок также не имеет значение, основное, Дабы имена совпадали с серверной частью
            this.chatter.applyMethod('hello', 'world', arguments);
        };
    </script>

    <script type="text/javascript">
        var sx;

        $(document).ready(function()
        {
            //Создаем, подключаемся
            sx = new Example1Chatter('localhost', 8888, {
                'onOpen': function(){
                    console.log('Connected');
                },
                'onClose': function(){
                    console.log('Disconnected');
                }
            });
        });

        function sendHello()
        {
            sx.hello('text2', 'text1', 'text3', function(data, success)
            {
                $('#results').append('<p>'   data.text   '</p>');
            });
        }
    </script>
</head>
<body>
            <button onclick="sendHello();">Send hello</button>
            <div id="results"></div
</body>

Также поддерживается подписка на события (массовая рассылка подписавшимся, отправка определенному заказчику).

На данный момент, к сожалению, документация отсутствует, но я в процессе её написания. Данный фреймворк применяется в компании, где я тружусь. Так что он «проверен» на нагрузки, часть багов выловлена и поправлена.

Есть дюже много вероятностей, не представленных тут и в примерах, подготавливаются еще несколько «плюшек».

Остальные примеры и начальный код на github.

Источник: programmingmaster.ru
Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB