托纳迪奥叉子2 0.0.4(谢尔盖S.科瓦尔)。Socket.IO 0.7+服务器在Tornado框架上的实现

HiCTornadIO2的Python项目详细描述


托纳迪奥叉子2 0.0.4(谢尔盖S.科瓦尔)

不幸的是,socket.io 0.8分支被放弃了,有大量的错误,没有得到修复。我建议换一种 选项,例如sockjs<;http://github.com/sockjs/>;。这里还有Sockjs Tornado<;http://github.com/mrjoes/Sockjs Tornado/>;。 我不打算再支持tornadio2了,假设父库不再被维护。

如果你还想用python来尝试socket.io 0.8.x,tornadio2是相当稳定的,并在生产中使用。

简介

这是python服务器实现的Socket.IO实时 位于Tornado框架顶部的传输库。

tornadio2与0.7+版本的socket.io和implements兼容 原始socket.io服务器软件中的大部分功能。

主要功能:

  • 支持Socket.IO 0.8协议和相关功能
  • 完全支持Unicode
  • 支持基于生成器的异步代码(tornado.gen api)
  • 统计数据捕获(每秒数据包等)

什么是socket.io?

socket.io旨在使每个浏览器和移动设备中的实时应用成为可能,模糊了不同传输机制之间的差异。这是免费的实时100%的javascript。

您可以使用它来构建推送服务、游戏等。Socket.IO将适应客户端浏览器,并将使用最有效的传输 协议可用。

开始

为了开始使用TornadIO2图书馆,你必须有一些基本的龙卷风 知识。如果你不知道如何使用它,请阅读龙卷风教程,可以找到 here

如果您熟悉Tornado,请执行以下操作以向应用程序添加对Socket.IO的支持:

  1. 派生自tornadio2.socketconnection类并重写on_消息方法(on_open/on_close是可选的):

    class MyConnection(tornadio2.SocketConnection):
        def on_message(self, message):
            pass
    
  2. 为您的连接创建tornadio2服务器:

    MyRouter = tornadio2.TornadioRouter(MyConnection)
    
  3. 将处理程序路由添加到Tornado应用程序:

    application = tornado.web.Application(
        MyRouter.urls,
        socket_io_port = 8000)
    
  4. 启动应用程序

  5. 您的socket.io服务器在端口8000上运行。很简单,对吧?

启动

我们提供了HttpServer的定制版本(不知羞耻地从sockettornad.io库中借用),其中 简化了tornadio服务器的启动。

要启动它,请执行以下操作(假设您以前创建过应用程序对象):

if __name__ == "__main__":
    socketio_server = SocketServer(application)

如果需要,socketserver将自动启动flash策略服务器。

如果不想立即启动IOLoop,请将auto_start = False作为构造函数选项之一传递,然后 然后手动启动ioloop。

更多信息

有关更多信息,请检查TornadIO2 documentation和示例应用程序。

示例

确认

Ping示例,显示如何使用事件在请求-响应模式下工作它在examples/ackping目录中。

跨站点

演示跨站点通信工作原理的聊天示例 (聊天服务器在端口8002上运行,而http服务器在端口8001上运行)。它在examples/crosssite目录中

基于事件和生成器的异步API

演示如何使用事件和基于生成器的API处理异步代码的示例。它在examples/gen目录中。

多路复用

Ping和聊天演示通过一个连接运行。您可以在examples/multiplexed目录中看到它

统计信息

tornadio2收集一些计数器,可用于解决应用程序性能问题。 examples/stats目录中的示例介绍了如何可以使用这些统计信息绘制实时图形。

rpc ping

通过socket.io事件工作的Ping它在examples/rpcping目录中。

运输

简单的乒乓球/乒乓球例子,具有可选择传输的聊天界面。它在 examples/transports目录。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java从SOAP响应获取值   prolog中不允许使用java StAX解析器内容   JAVA项目中,创建一个由4行11列组成的显示表   java原子写入Spring可变bean   完整的worddatabase for JavaApp检查一个单词是否是一个合法的单词,在这种情况下SQL是否合适?   java如何将数组字节转换为组织。w3c。多姆。文件   运行Spring MVC应用程序时出现java JBoss错误   java为什么scanner类与BufferedReader相比需要较长的时间   java jaxb2mavenplugin仅执行第一次执行   java有什么方法可以使活动在单击每个按钮时做出不同的反应?   对java开发人员学习数据结构和算法有何建议   lambda我对java函数签名有疑问   java使用Maven创建三层应用程序   java Hadoop分布式文件系统是否像Google文件系统一样支持任何更新操作?   按下按钮后,swing Java Key事件不会执行   java JPA Hibernate删除实体关系中的孤立项   java将负数输入到数字反转程序中   java在OpenCV中无阻塞地从回调方法获取图像