首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cherrypy作为gevent-socketio服务器

cherrypy作为gevent-socketio服务器
EN

Stack Overflow用户
提问于 2012-08-08 00:25:21
回答 2查看 1.9K关注 0票数 1

我刚刚开始使用gevent-socketio,它太棒了!

但我一直在使用聊天教程中的默认socketioserversocketio_manage,并想知道如何将socketiocherrypy集成。

从本质上讲,我该如何转变这一点:

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-08 22:06:15

Gevent-socketio基于Gevent和Gevent的web服务器。有两个实现: pywsgi和wsgi,前者是纯python,后者使用libevent的http实现。

请看这里以“pywsgi.WSGIServer和wsgi.WSGIServer之间的区别”开头的段落:

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

只有这些服务器是“绿色”的,因为它们将控制权交给了Gevent循环。所以你只能使用那些服务器afaik。这样做的原因是,服务器出现在请求的最开始,它将知道如何处理“升级”和websockets协议协商,并且它将在“环境”中传递下一层(SocketIO)将期望并知道如何处理的值。

您还需要使用gevent-websocket包。因为它是绿色的(而gevent-socketio就是基于这个绿色的)。您不能只是交换websocket堆栈。

希望这能有所帮助。

票数 3
EN

Stack Overflow用户

发布于 2012-08-08 15:05:41

CherryPy不实现socket.io协议,也不支持将WebSocket作为内置协议。但是,CherryPy有一个名为ws4py的扩展,它只在其堆栈的顶部实现了纯WebSocket协议。你可以从那里开始。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11850203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档