jMy*_*les 12 python comet twisted websocket twisted.web
在我对websockets的持续好奇心中,我注意到了一个趋势:
至少在目前,websocket宇宙的"hello world"似乎是"回声"功能.也就是说,演示的应用程序通常是"我送东西,我收到的东西."
虽然恰当地证明了协议是有用的,但这个例子实际上只展示了传统请求/响应周期所能实现的相同类型的通信.
例如,我可以找到twisted.web.websockets的唯一演示(在服务器端)如下:
import sys
from twisted.python import log
from twisted.internet import reactor
from twisted.web.static import File
from twisted.web.websocket import WebSocketHandler, WebSocketSite
class Echohandler(WebSocketHandler):
def frameReceived(self, frame):
log.msg("Received frame '%s'" % frame)
self.transport.write(frame + "\n")
def main():
log.startLogging(sys.stdout)
root = File(".")
site = WebSocketSite(root)
site.addHandler("/ws/echo", Echohandler)
reactor.listenTCP(8080, site)
reactor.run()
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
我怎样才能在这里检查"推送"功能?也就是说,我如何让Web套接字保持打开状态,然后在某个时间由某些事件的发生决定,通过websocket发送消息,其内容也受此事件的影响?
(那些对这个问题感兴趣的人也可能会认为这个问题引起了我几天前提出的问题:使用websockets和python/django进行移动(/ twisted?))
这是一个更新的EchoHandler的示例,它不仅仅是被动的,而是主动的.
class ChattyHandler(WebSocketHandler):
def connectionMade(self):
self.transport.write('oh hai\n')
self.saysomething()
def saysomething(self):
self.transport.write('still there?\n')
reactor.callLater(5, self.saysomething)
Run Code Online (Sandbox Code Playgroud)
不幸的是,来自https://github.com/rlotun/txWebSocket/的 websockets 似乎没有connectionMade()方法,相反,你唯一可以挂钩的是 __init__.通常你只是覆盖connectionMade(),如果它是'正常'扭曲协议. - 固定在上游
| 归档时间: |
|
| 查看次数: |
7776 次 |
| 最近记录: |