我正在开发一个简单的网页应用,使用angular和cherrypy完成(目前是原型)。我正在上传两个文件,并在cherrypy中调用外部的python程序进行处理,使用subprocess(popen)。到目前为止,我已经可以做到这一点。我的目标是将来自外部程序的输出(通过popen捕获)传递给客户端。我的问题在于,我正在尝试在cherrypy上设置服务器发送事件,并且没有成功。
我看过这个问题和这篇博客。然而,在从服务器端调用函数时,EventSource对象上的onmessage事件没有触发。我的理解是,您可以从服务器端调用该函数,并且它将捕获来自浏览器的事件。我的理解错误还是设置有误?
下面是我正在公开的cherrypy方法(从网页上的示例中选择):
@cherrypy.expose
def getUpdate(self):
#Set the expected headers...
cherrypy.response.headers["Content-Type"] = "text/event-stream;charset=utf-8"
def content():
yield "Hello,"
yield "world"
return content()
以下是 JavaScript 客户端代码(我已启用并正常使用 CORS):
var sseEvent = new EventSource('http://localhost:8090/getUpdate');
sseEvent.onmessage = function (event) {
console.log(event);
};
sseEvent.onopen = function (event) {
//console.log("I have started...");
};
我看过这个问题和这篇博客。然而,在从服务器端调用函数时,EventSource对象上的onmessage事件没有触发。我的理解是,您可以从服务器端调用该函数,并且它将捕获来自浏览器的事件。我的理解错误还是设置有误?