扭曲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.WebSocketUpgradeResource和txws.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的活力。