минимальный пример микрофреймворка Python для бутылок с использованием gevent -socketio и Socket.IO.js

Вопрос:Что было бы сопоставимым решением с примером в этой ссылке , кроме реализованного с использованием gevent -socketio и Socket.io.js с бутылкой ? Я ищу минимальное решение, которое просто будет передавать некоторый трафик в цикле от клиента к серверу и обратно к клиенту, используя gevent -socketio, Socket.io.js и бутылку.

Фон:Я разработал простое веб--приложение, которое предоставляет веб-терминал -для удаленной пользовательской оболочки (cli )на сервере. Браузер (клиент )собирает команды оболочки из поля ввода формы, передает команду через веб-сокет -в gevent.pywsgi.WSGIServer, обрабатывающий запросы через обработчик geventwebsocket.WebSocketHandler, который передает команду оболочке., асинхронно возвращая вывод через сокет в поле textarea в форме в клиентском браузере. Это основано на замечательном маленьком примере, предоставленном командой разработчиков бутылок :

http://bottlepy.org/docs/dev/async.html#finally-websockets

. Предоставляется здесь для резервирования:

пример _server.py:

from bottle import request, Bottle, abort
app = Bottle()

@app.route('/websocket')
def handle_websocket():
    wsock = request.environ.get('wsgi.websocket')
    if not wsock:
        abort(400, 'Expected WebSocket request.')

    while True:
        try:
            message = wsock.receive()
            wsock.send("Your message was: %r" % message)
        except WebSocketError:
            break

from gevent.pywsgi import WSGIServer
from geventwebsocket import WebSocketHandler, WebSocketError
server = WSGIServer(("0.0.0.0", 8080), app,
                    handler_class=WebSocketHandler)
server.serve_forever()

клиент.html:




  


Мотивация:Мое существующее приложение отлично работает в последних версиях Firefox и Chrome. Поддержка IE отсутствует -, а совместимость с Safari находится на среднем уровне. В конечном итоге я ищу решение для кросс-браузера -для обмена командами оболочки и вывода между клиентом и сервером. Думаю, если бы у меня был простой пример с бутылкой, я бы продвигался вперед быстрее.

Кстати, я посмотрел gevent -socketio examples и даже пример бутылки ,но все эти примеры слишком отличаются от приведенного выше простого примера, чтобы я мог сделать скачок в применении. (Примеры gevent -socketio совсем не похожи на приложения для бутылок, с которыми я знаком. И пример с бутылкой на самом деле не показывает, как общаться с клиентом.)

Спасибо!:)

10
задан Trevor 4 August 2012 в 03:54
поделиться