- PVSM.RU - https://www.pvsm.ru -
Хочу представить сообществу своё небольшое творение — Chatter.
Chatter основан на python 2.7, использует tornado [1].
Имеется готовое API для python (бэкэнд) и для js (фронтэнд)
Примеры и исходный код на github [2].
Для быстрой и удобной разработки. Имеется собственный «протокол» — обёртка над json.
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()
Больше ничего не нужно — при запуске сервиса папка api будет автоматически проанализирована на «методы», будет построена древовидная структура методов.
Поддерживается динамическое обновление методов (пример в гите — chat).
class __api_result__(APIMethod):
#параметры анализируются автоматически, порядок не имеет значение - главное "имя" параметра
def run(self, text1, text2, text3):
#возвращаем результат - tuple
#нулевой элемент - dict-параметров
#первый - success (результат выполнения - True / False)
return ({'text': [text1, text2, text3]}, True)
<!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 class="btn" onclick="sendHello();">Send hello</button>
<div id="results"></div
</body>
Также поддерживается подписка на события (массовая рассылка подписавшимся, отправка определенному клиенту).
На данный момент, к сожалению, документация отсутствует, но я в процессе её написания. Данный фреймворк используется в компании, где я работаю. Так что он «проверен» на нагрузки, часть багов выловлена и исправлена.
Есть очень много возможностей, не представленных здесь и в примерах, готовятся еще несколько «плюшек».
Остальные примеры и исходный код на github [2].
Автор: Vidog
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/37044
Ссылки в тексте:
[1] tornado: http://habrahabr.ru/search/?q=python+tornado&target_type=posts
[2] github: https://github.com/Vidog/chatter
[3] Источник: http://habrahabr.ru/post/184090/
Нажмите здесь для печати.