1

使い始めたばかりgevent-socketioで素晴らしいです!

しかし、私はデフォルトsocketioserversocketio_manageチャットチュートリアルを使用していて、と統合socketioする方法を考えていましcherrypyた。

基本的に、これをどのように変えるか:

class MyNamespace(BaseNamespace):...

def application(environ, start_response):
    if environ['PATH_INFO'].startswith('/socket.io'):
        return socketio_manage(environ, { '/app': MyNamespace})
    else:
        return serve_file(environ, start_response)

def serve_file(...):...

sio_server = SocketIOServer(
    ('', 8080), application, 
    policy_server=False) sio_server.serve_forever()

通常にcherrypy server

4

2 に答える 2

3

Gevent-socketioは、GeventとGeventのWebサーバーに基づいています。2つの実装があります。純粋なPythonであるpywsgiと、libeventのhttp実装を使用するwsgiです。

ここで「pywsgi.WSGIServerとwsgi.WSGIServerの違い」で始まる段落を参照してください。

http://www.gevent.org/servers.html

これらのサーバーのみが「グリーン」であり、Geventループに制御を委ねるという意味で、これらのサーバーのみを使用できます。これは、サーバーがリクエストの最初に存在し、「アップグレード」とWebSocketプロトコルのネゴシエーションを処理する方法を知っており、次のレイヤー(SocketIO)の「環境」内で値を渡すためです。処理方法を期待し、知っています。

また、gevent-websocketパッケージを使用する必要があります。これは緑色であるためです(gevent-socketioはそのパッケージに基づいています)。WebSocketスタックを単に交換することはできません。

お役に立てれば。

于 2012-08-08T14:06:14.640 に答える
1

CherryPyはsocket.ioプロトコルを実装しておらず、組み込みとしてWebSocketをサポートしていません。ただし、CherryPyにはws4pyと呼ばれる拡張機能があり、スタックの最上位にベアWebSocketプロトコルのみを実装します。あなたはおそらくそこから始めることができます。

于 2012-08-08T07:05:41.203 に答える