gpt4 book ai didi

python - 处理服务器端事件断开连接

转载 作者:太空宇宙 更新时间:2023-11-04 10:21:24 24 4
gpt4 key购买 nike

我有一个简单的 python bottle 应用程序,它向 javascript 监听器发出 SSE 事件。

在客户端通过浏览器刷新或页面返回等“离开”之前,这没有问题。

由于来自应用程序的事件被传送,然后从内部队列中删除,当服务器试图将它们发送到不再存在的客户端时,一两个事件会丢失。

我不希望事件丢失,但我目前看不到以合理方式解决此问题的方法。

我打算改用网络套接字并使用事件-确认模型来解决问题,除非我可以用 SSE 做些什么来防止事件以这种方式丢失。

在我看来,SEE 可能不是为我考虑的特定用例而设计的。

这是我使用的代码:

@route('/stream/events')
def event_stream():
response.content_type = 'text/event-stream'
response.cache_control = 'no-cache'
# Set client-side auto-reconnect timeout, ms.
yield 'retry: 1000\n\n'

while True:
event = event_queue.get()
logging.debug("Received event from hal: %s", event)
yield "data: " + json.dumps(event) + "\n\n"

可以在此处找到指向我的问题解决方案的链接。它使用弱引用来“检测”客户端何时离开,以及每个 SEE 连接的单独队列:http://blog.jason.spashett.com/python-bottle-server-side-events-one-way-to-handle-client-disconnects.html

最佳答案

您需要将事件保存在您的服务器上,以便在重新连接或页面刷新时您可以检索它们。

我在一篇博文中谈到了这个主题。

http://bayn.es/real-time-web-apps-with-server-sent-events-pt-2/

关于python - 处理服务器端事件断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32092047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com