在我对 websockets 的持续好奇中,我注意到了一个趋势:
websocket 世界的“hello world”,至少目前,似乎是“echo”功能。也就是说,演示的应用程序通常是“我发送一些东西,我接收一些东西”。
虽然恰当地证明了该协议是有效的,但这个例子实际上只演示了传统请求/响应周期所支持的相同类型的通信。
例如,我能找到的 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()
我怎样才能在这里检查“推送”功能?即,我怎样才能让 web socket 保持打开状态,然后在某个时间由某个事件的发生确定,通过 websocket 发送消息,其内容也受此事件影响?
(对这个问题感兴趣的人也可能认为我前几天问的这个问题很有说服力:Making move w/websockets and python/django (/twisted?))