我正在使用烧瓶构建一个网站,我希望对客户端进行推送。我已经关注了real-time-events-python,我就可以创建网站了。
我注意到的一件事是,当访问Javascript控制台时,每500毫秒有一个GET,所以我想知道javascript的EventSource是否实际上定期向服务器发送一个GET以查看是否有任何更新,使它成为忙碌的等待。
有关信息,我正在使用Flask(python框架)开发网站,并使用chrome来访问它。
答案 0 :(得分:3)
根据the link you provided,是的,浏览器发送GET作为服务器发送事件的实现:
Server-Sent Events的实际协议非常简单。客户端 将打开与服务器的标准连接并发出GET请求。 它希望服务器保持打开套接字并发送新事件 给它们添加数据前缀:并以两个换行符结束。
因此,在服务器端,连接应该保持打开状态,而数据仍然通过它进行流式传输。请记住,Server-Sent Events允许自动重新连接,因此如果您遇到大量重新连接(我想这是所有这些重新连接,除非您的客户端代码编写不正确),您应该检查以使确保您的服务器端没有关闭连接,这会导致浏览器重新打开连接。
至于“忙碌的等待”,如果我正确理解你,你不必担心这个。这是由浏览器处理的,因此您的代码在等待某些内容时不会阻塞。