geventとWebSocketとginkgoとFlask
geventでWebSocketを使ってみる - へきょのーと
geventとWebSocketとFlask - へきょのーと
geventをginkgoフレームワークで使ってみたよ - へきょのーと
前回、ginkgoフレームワークを利用してgeventを使いましたが
今回はそれにFlaskも組み込んでみます。
インストール
※変更なし
コーディング
app.py
import os from ginkgo import Service from ginkgo.async.gevent import WSGIServer from geventwebsocket.handler import WebSocketHandler from flask import Flask, render_template class WebSocket(Service): def __init__(self): self.add_service(WSGIServer(('127.0.0.1', 8001), self.handle, handler_class=WebSocketHandler)) def handle(self, environ, start_response): if environ.get('wsgi.websocket'): ws = environ["wsgi.websocket"] while True: src = ws.receive() if src is None: break ws.send(src) class Http(Service): app = Flask(__name__) def __init__(self): self.add_service(WSGIServer(('127.0.0.1', 8000), self.app)) @app.route("/", methods=['GET']) def index(): return render_template('index.html') class Application(Service): def __init__(self): self.add_service(Http()) self.add_service(WebSocket())
index.html
※変更なし
実行
ginkgo app.Application
ブラウザで"http://127.0.0.1:8000/"にアクセスして
input textに文字を入力して"push"すると
textareaに入力した内容が表示されました!