Server Sent Event和asp classic

时间:2016-03-31 17:16:21

标签: html5 asp-classic server-sent-events

我制作了一个ASP脚本,其中包含Server Sent Events所需的所有标头。 客户端脚本正在运行。我用PHP脚本测试它,它工作正常。 ASP脚本工作,如果从URL行调用它,它将返回预期的消息,但是当javascript调用它时,元素检查器将数据返回为“undefined”。 当我将断点设置为“open”事件监听器时,“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 :(
}

谢谢!

2 个答案:

答案 0 :(得分:0)

尝试在Response.Flush

之后使用Response.Write

编辑* 在strResponse字符串后输入两个: response.Write strResponse & vbCrLf & vbCrLf

答案 1 :(得分:0)

尝试这个工作

Response.Write("data: The server time is: " & now()) & chr(13) & chr(10) & chr(13) & chr(10)

Response.Flush()