2016-07-06 3 views
0

Я использую geventwebsockets, но даже не могу заставить приложение работать. Приведенный ниже код дает мне ошибку:Как получить gevent websockets?

Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/gevent/pywsgi.py", line 884, in handle_one_response self.run_application() File "/usr/local/lib/python2.7/dist-packages/geventwebsocket/handler.py", line 88, in run_application return super(WebSocketHandler, self).run_application() File "/usr/local/lib/python2.7/dist-packages/gevent/pywsgi.py", line 870, in run_application self.result = self.application(self.environ, self.start_response) File "/usr/local/lib/python2.7/dist-packages/geventwebsocket/resource.py", line 90, in call raise Exception("No apps defined") Exception: No apps defined

from geventwebsocket import WebSocketServer, WebSocketApplication, Resource 

class EchoApplication(WebSocketApplication): 
    def on_open(self): 
     print "Connection opened" 

    def on_message(self, message): 
     self.ws.send(message) 

    def on_close(self, reason): 
     print reason 

WebSocketServer(
    ('', 8000), 
    Resource({'/': EchoApplication}) 
).serve_forever() 

Я бегаю по кругу. Может кто-нибудь мне помочь? Спасибо.

ответ

0

ли работа для вас

Если добавить echo_app

def echo_app(environ, start_response): 
    websocket = environ.get("wsgi.websocket") 

    if websocket is None: 
     return http_handler(environ, start_response) 
    try: 
     while True: 
      message = websocket.receive() 
      websocket.send(message) 
     websocket.close() 
    except geventwebsocket.WebSocketError, ex: 
     print "{0}: {1}".format(ex.__class__.__name__, ex) 

и передать его как

print "Running %s from %s" % (agent, path) 
WebSocketServer(("", 8000), echo_app, debug=False).serve_forever() 

, как показано в

https://bitbucket.org/noppo/gevent-websocket/src/0df192940acd288e8a8f6d2dd30329a3381c90f1/examples/echoserver.py