我正在使用SSE和内置逻辑的EventStream for javascript。在onopen
返回成功结果的同时,onmessage
回调无效。
奇怪的是,在 EventStream 标签中的Chrome中,数据结果按照我的预期列出。
这是我的EventSource的JS代码段
var eventSource;
$(function () {
eventSource = new EventSource('get/status/');
eventSource.onopen = function () {
console.log("Sse connection opened");
};
eventSource.onerror = function () {
console.log("error occured");
};
eventSource.onmessage = function (event) {
console.log("received");
};
});
正如您所看到的那样,会发出数据,但永远不会触发onmessage
。任何人都可以向我解释这种行为吗?
编辑:onopen
和onerror
都有效。
答案 0 :(得分:16)
根据屏幕截图,您的事件流包含"foo"
类型的事件,而不是"message"
。这只是默认类型(事件流中没有event
字段)。来自the spec:
将事件的类型属性初始化为
message
,[...]- 醇>
如果事件类型缓冲区的值不是空字符串, 将新创建的事件的类型更改为等于的值 事件类型缓冲区。
在这里,您应该将听众设置为侦听"foo"
个事件:
eventSource.addEventListener("foo", function() {...})