我做了一个ASP脚本与服务器发送事件所需的所有标头。客户端脚本工作正常。我用PHP脚本对它进行了测试,它工作得很好。ASP脚本可以工作,如果您从URL行调用它,它会返回预期的消息,但是当javascript调用它时,元素检查器会将数据返回为“未定义”。当我将断点设置为“打开”事件侦听器时,"e.data“是”未定义的“。
由于某种原因,Javascript不接受ASP脚本发送的UTF-8文本。
请帮帮我!
asp代码:
strResponse = strResponse & "data: " & now()
response.Buffer = true
response.CharSet = "utf-8"
response.ContentType="text/event-stream"
response.AddHeader "content-Type", "text/event-stream;charset=UTF-8"
response.AddHeader "Cache-Control", "no-cache"
response.AddHeader "Content-Length", len(strResponse)
response.AddHeader "Connection", "Keep-Alive"
response.Write strResponse
Javascript:
if (!!window.EventSource) {
var source = new EventSource('serversend.asp');
source.addEventListener('message', function (e) {
console.log(e.data);
}, false);
source.addEventListener('open', function (e) {
console.log("open " + e.data);
}, false);
source.addEventListener('error', function (e) {
if (e.readyState == EventSource.CLOSED) {
console.log(e.data);
}
}, false);
} else {
// something else :(
}
谢谢!
发布于 2016-12-09 14:22:32
尝试在Response.Write
之后使用Response.Flush
在strResponse字符串后编辑* Put两个输入项:response.Write strResponse & vbCrLf & vbCrLf
发布于 2018-03-28 13:52:37
试试看,这是有效的
Response.Write("data: The server time is: " & now()) & chr(13) & chr(10) & chr(13) & chr(10)
Response.Flush()
https://stackoverflow.com/questions/36339704
复制相似问题