Chatter-トルネードを使用したPython 2.7ベースのWebSocketフレームワーク

私の小さな創造物であるChatterをコミュニティに紹介したいと思います。



ChatterはPython 2.7に基づいており、 tornadoを使用します。



Python(バックエンド)およびjs(フロントエンド)用の既製のAPIがあります



githubのサンプルとソースコード。



なぜ実際に作成されたのですか?









迅速かつ簡単な開発のため。 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フォルダーのアプリファイルの横に保存されます。 フォルダー構造:








これ以上は必要ありません-サービスが開始されると、apiフォルダーは自動的に「メソッド」について分析され、メソッドのツリーのような構造が構築されます。



メソッドの動的更新がサポートされています(git-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 class="btn" onclick="sendHello();">Send hello</button> <div id="results"></div </body>
      
      







イベントへのサブスクリプションもサポートされています(署名者への大量メール送信、特定のクライアントへの送信)。



残念ながら、現時点ではドキュメントはありませんが、現在作成中です。 このフレームワークは、私が働いている会社で使用されています。 そのため、負荷が「チェック」され、いくつかのバグが検出されて修正されました。



ここには示されていない非常に多くの機能があり、例では、さらにいくつかの「グッズ」が準備されています。



githubのその他の例とソースコード。



All Articles