2012-08-07 3 views
1

방금 ​​gevent-socketio을 사용하기 시작했습니다.gevent-socketio 서버로 cherrypy

하지만 채팅 튜토리얼에서 기본 socketioserversocketio_manage을 사용하고있다 및 cherrypysocketio을 통합하는 방법을 궁금 해서요. 일반 cherrypy server

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() 

: 기본적으로

, 어떻게이 설정합니까?

답변

3

Gevent-socketio는 Gevent와 Gevent의 웹 서버를 기반으로합니다. pure python 인 pywsgi와 libevent의 http 구현을 사용하는 wsgi의 두 가지 구현이 있습니다. 그들은 제어를 얻을 수 있음을

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

만 해당 서버가 "녹색"이고, 의미에서 :

단락은 여기에 "pywsgi.WSGIServer과 wsgi.WSGIServer의 차이"로 시작하는 참조 Gevent 루프 .. 그래서 당신은 afaik 그 서버를 사용할 수 있습니다. 그 이유는 서버가 요청의 맨 처음에 존재하고 "업그레이드"및 웹 소켓 프로토콜 협상을 처리하는 방법을 알게되고 다음 계층 (SocketIO)이 "environ" 기대하고 처리하는 방법을 알고 있습니다.

gevent-websocket 패키지는 초록색이기 때문에 (gevent-socketio는이 패키지를 기반으로하기 때문에) 사용해야합니다. websocket 스택을 바꿀 수는 없습니다.

희망이 도움이됩니다.

1

CherryPy는 socket.io 프로토콜을 구현하지 않으며 WebSocket을 기본 제공으로 지원하지 않습니다. 그러나 ws4py이라고하는 CherryPy의 확장이 있으며 스택 맨 위에 맨손으로 WebSocket 프로토콜 만 구현합니다. 아마 거기에서 시작할 수 있습니다.

+1

websocket 레이어를 바꾸고 gevent-socketio를 계속 사용할 수는 없습니다. gevent-websocket이 필요하며 Gevent 기반 서버에서 실행해야합니다. – abourget

+1

내가 그런 말을 했니? 문제는 예제를 CherryPy 서버로 전환하는 방법이었습니다. 내가 준 응답은 정확하다. gevent-socketio가 gevent 스택을 필요로한다는 사실 외에도 CherryPy가 socket.io 프로토콜을 구현하지 않기 때문에 할 수 없다. 한숨. –