我正在使用 Flask 构建一个网站,我希望向客户端推送。我关注了real-time-events-python我能够创建该网站。
我注意到的一件事是,访问Javascript控制台时,每500ms就有一次GET,所以我想知道javascript的EventSource是否确实定期向服务器发送GET以查看是否有任何更新,导致其成为忙碌等待。
仅供引用,我使用 Flask(python 框架)来开发网站,并使用 chrome 来访问它。
最佳答案
根据the link you provided是的,浏览器发送 GET 作为服务器发送事件的实现:
The actual protocol for Server-Sent Events is very simple. The client will open a standard connection to the server and make a GET request. It expects the server to hold open the socket and send new events by prefixing them with data: and terminating with two newline characters.
因此,在服务器端,连接应该保持打开状态,而数据仍在通过它传输。请记住,服务器发送的事件允许自动重新连接,因此,如果您遇到大量重新连接(我想这就是所有这些重新连接,除非您的客户端代码编写不正确),您应该检查以确保确保您的服务器端没有关闭连接,这会导致浏览器重新打开连接。
至于“忙等待”,如果我理解正确的话,你不需要担心这个。这是由浏览器处理的,因此您的代码在等待某些内容时不会阻塞。
关于javascript - 服务器发送的事件是否为 "Busy Wait"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14987539/