geventとWebSocketとFlask

geventでWebSocketを使ってみる - へきょのーと

前回の内容にFlaskを組み込んでみた。

環境

Max OS X 10.6.8
Python 2.7.3
gevent 0.13.7
gevent-websocket 0.3.6
Flask 0.9

インストール

前回の環境をそのまま使います。

pip install Flask
mkdir templates
mv index.html templates/

コーディング

app.py
import os
from gevent import pywsgi
from geventwebsocket.handler import WebSocketHandler
from flask import Flask, request, render_template

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')
                                                                                                                        
@app.route('/echo')
def echo():
    if request.environ.get('wsgi.websocket'):
        ws = request.environ['wsgi.websocket']
        while True:
            src = ws.receive()
            if src is None:
                break
            ws.send(src)
    return

if __name__ == '__main__':
    server = pywsgi.WSGIServer(('127.0.0.1', 8000), app, handler_class=WebSocketHandler)
    server.serve_forever()
index.html

※変更なし

実行

python app.py

ブラウザで"http://127.0.0.1:8000/"にアクセスして
input textに文字を入力して"push"すると

textareaに入力した内容が表示されました!