服务器从Flas向多个客户端发送了事件

2024-10-01 17:36:13 发布

您现在位置:Python中文网/ 问答频道 /正文

为了更好地理解web技术,我正在做一个小项目。 一个要求是,如果多个客户可以访问我的站点,并且其中一个客户进行了更改,则应通知所有其他客户。从我收集到的信息来看,服务器发送的事件似乎是我想要的。 然而,当我在Firefox和Chrome中打开我的站点并尝试发送一个事件时,只有一个浏览器得到它。如果我再次发送一个事件,只有一个浏览器得到新事件,通常是没有得到事件号1的浏览器。在

下面是相关的代码片段。在

客户:

console.log("setting sse handlers")
viewEventSource = new EventSource("{{ url_for('viewEventRequest') }}");
viewEventSource.onmessage = handleViewEvent;

function handleViewEvent(event){
    console.log("called handle view event")
    console.log(event);
}

服务器:

^{pr2}$

我的问题是,如何将事件发送到所有连接的客户端,而不仅仅是一个?在


Tags: 项目eventlogweb信息客户站点事件
1条回答
网友
1楼 · 发布于 2024-10-01 17:36:13

以下是一些可能有帮助的gist(我一直想在'django-sse'的基础上发布一些类似于'flask-sse'的东西):

https://gist.github.com/3680055

https://gist.github.com/3687523

也有用-https://github.com/jkbr/chat/blob/master/app.py

关于您的代码,我首先注意到的是“handle_view_event”不是生成器。 虽然它处于“while”循环中,但在第一次返回数据时,使用“return”总是会退出函数;函数只能返回一次。我想你想让它变成“屈服”。在

在任何情况下,上面的链接应该给你一个工作设置的例子。在

正如阿纳罗夫所说,websockets和插座.io也是一种选择,但不管怎样,SSE都应该起作用。我想插座.io如果不需要ws,则支持使用SSE。在

相关问题 更多 >

    热门问题