首页 文章

高级Python库,用于透明地使用Websocket和Comet“后备”

提问于
浏览
1

我正在寻找一个高级Python库来 Build 到Web服务器的HTTP连接 . 理想情况下,连接应保持开放(持久)以发送和接收双向消息,因此Websocket对我来说很棒 . 因为我希望它与大多数HTTP代理兼容,我认为使用HTTP轮询(Comet风格)的“后备”模式 .

我的问题是我无法找到一个透明地管理这两种连接的库 . 理想情况下,我会使用其中一种技术(Websocket或Comet) Build 与服务器的连接,然后使用相同的函数为两种类型的连接发送/接收消息 .

我为此找到了许多Python服务器和一些Js客户端,但在Python中却找不到 . 我看了看:Twisted,Tornado,ZeroMQ,py4ws

2 回答

  • 0

    你看过socket.io吗?它主要用于websockets,但有很多后备,因此应该被所有浏览器支持 .

    对于服务器端,我使用了flaskgevent-socketio . Miquel Gringberg最近发布了flask-socketio扩展,这对于使用flask和gevent-socketio来说是一个很好的抽象 . Gevent-socketio Build 在漂亮的gevent库上 .

    gevent-socketio应该可以与其他Python框架一起使用,例如Django和Bottle .

    我不完全确定这是否适合你的账单,但可能值得一看 .

  • 1

    我认为Python Socket-IO客户端可能是一个很好的解决方案:https://github.com/invisibleroads/socketIO-client

    他可以使用相同的范例轻松地与Socket.io NodeJs服务器进行交互 .

    我测试了它,它可以默认使用Websocket连接和回退到xhr-polling,这很棒(我实际上通过代理测试了这个功能) .

    示例:

    with SocketIO('http://127.0.0.1', 7777, Namespace, transports=["websocket", "xhr-polling"], proxies={'http': 'http://localhost:8888'}) as socketIO:
        socketIO.on('foo',some_callback_function)
        socketIO.emit('bar')
        socketIO.wait()
    

相关问题