扭曲websockets包装器

txWS-Upgrade的Python项目详细描述


txws upgrade(发音为“twisted websockets upgrade”)是用于 向您喜爱的twisted应用程序添加websockets服务器支持。

这是从txws派生的,以添加升级支持。 https://github.com/MostAwesomeDude/txWS

用法

使用txws.WebSocketFactory包装工厂。就这样!添加 websockets支持从未如此简单。

>>> from txws import WebSocketFactory
>>> reactor.listenTCP(8080, WebSocketFactory(factory_to_wrap))

txws没有额外的技巧。不涉及特殊设置。

你想要安全的websockets吗?使用listenSSL()而不是listenTCP()

升级用法

如果您想在现有站点中使用WebSu套,请更新您的代码如下。

这是一个香草扭曲的网站。

from twisted.web import server
from twisted.web.resource import Resource
from twisted.internet import reactor, endpoints

class Simple(Resource):
    isLeaf = True
    def getChild(self, name, request):
        if name == '':
            return self
        return Resource.getChild(self, name, request)

    def render_GET(self, request):
        return "Hello, world! I am located at %r." % (request.prepath,)

rootResource = Simple()
site = server.Site(rootResource)

endpoint = endpoints.TCP4ServerEndpoint(reactor, 8080)
endpoint.listen(site)
reactor.run()
现在添加网站对websockets的支持,包括

txws.WebSocketUpgradeResourcetxws.WebSocketUpgradeHTTPChannel

from twisted.web import server
from twisted.web.resource import Resource
from twisted.internet import reactor, endpoints

class Simple(Resource):
    isLeaf = True
    def getChild(self, name, request):
        if name == '':
            return self
        return Resource.getChild(self, name, request)

    def render_GET(self, request):
        return "Hello, world! I am located at %r." % (request.prepath,)

rootResource = Simple()
site = server.Site(rootResource)

# 1) Add the imports
#    Create the WebSocketFactory
#    Create the WebSocketUpgradeResource
#    Put the resource into the resource tree
from txws import WebSocketFactory, WebSocketUpgradeResource
rootResource.putChild(b"websocket",
                      WebSocketUpgradeResource(WebSocketFactory(factory_to_wrap)))


# 2) Add the imports
#    Replace protocol for the website with the Websocket upgradable ones
from txws import WebSocketUpgradeHTTPChannel
site.protocol = VortexWebsocketHTTPChannel

endpoint = endpoints.TCP4ServerEndpoint(reactor, 8080)
endpoint.listen(site)
reactor.run()

版本

TXWS支持WebSockets草稿的以下版本:

  • Version 76
    • Hixie-76 (Chrome 6, Fx 4, Opera 11, UNTESTED Safari 5)
    • HyBi-00
  • Version 7
    • HyBi-07 (Fx 6)
  • Version 8
    • HyBi-08
    • HyBi-10 (Chrome 14, Chrome 15, Fx 7, Fx 8)
  • Version 13
    • RFC 6455 (Chrome 16)

所有列出的浏览器版本都已测试并验证工作正常;任何浏览器 标记为“未经测试”的设备尚未经过个人测试,但据报道仍能正常工作 由第三方提供。

如果你想知道,上面的版本号是正确的;websockets 版本控制不健全。

浏览器怪癖

在开发基于websockets的网站时,这可能会节省一些时间 申请。

  • Firefox (all versions): WebSockets do not follow the standard WebSocket API.
  • Opera 11: WebSockets are disabled by default and are very slow to close connections.

比较

下面是txws与其他twisted websockets库的比较。

txwebsockets

与txwebsockets不同,txws不重用任何http机器,也不 假装是http。这是好事还是坏事很大程度上取决于 websockets标准是否最终成为有效的http子集。

txws支持较新的ws版本7和8,但txwebsockets支持较旧的 版本75。两个库都支持版本76。

高速公路

Autobahn为WebSocket和服务器提供了一个客户端库,并且 在ws层之上提供了一组奇特的消息传递协议。自动驾驶室 还提供了对ws版本10的支持。

但是,autobahn不支持ws版本76,需要 客户机对其工厂和协议进行子类化以提供ws 功能。TXWS使用了一种组合的方法来包装协议, 允许完全透明地重用现有协议和工厂。

旋风

cyclone提供了一个简单的websockets处理程序。此处理程序可以执行WS版本 75和76。旋风websockets处理程序非常有限,只能包装其他 旋风处理器,不支持任何更现代的WebSocket 版本。

许可证

TXWS是(c)2011俄勒冈州立大学开源实验室,(c)2014谷歌 并在Apache2.0许可下提供。

谢谢

感谢社区里所有的贡献者 帮助保持TXW的活力。

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

推荐PyPI第三方库


热门话题
由ScheduledExecutorService触发的java同步线程   java如何兼容OpenJRE/JDK1.8。x与OracleJRE/jdk1.8。十、   可重用代码的静态最佳实践Java   TestsNG中有多个测试的java事务问题   排序为什么我的气泡排序不起作用?JAVA   JavaSpring与动态数据源   java如何在Mule Dataweave转换中使用正则表达式替换特殊字符?   java是否单独调用服务器以在jsp文件的img标记中呈现图像?   java基本语法,用于在函数中将扫描程序对象作为参数传递   java基于两列在Hibernate中填充外部集合   java安装eclipse时,我在文件夹中找不到jdk   kotlin Java 11`HttpClient`正在下载但未下载?(负内容长度)   文件Java无法读取Ö(特殊字符)并打印它   javars+Spring   java TestNg Selenide。没有webdriver绑定到当前线程   java我应该如何对数据库建模,以便数据库中的每个学生实体都有一个与每个课程实体相关的分数?   java GoogleAccountCredential getSelectedAccountName()在设置并实现权限后返回null   java从ngclick调用servlet中的函数   java NetBeans JTable不带滚动窗格,保留标题   java Drools从会话中获取相同类型的对象