服务器发送事件和asp经典技术

3
我制作了一个带有服务器发送事件所需头文件的ASP脚本。 客户端脚本正在工作。我用PHP脚本测试过它,它很好用。 如果你从URL行调用ASP脚本,它会返回预期的消息,但是当javascript调用它时,元素检查器将数据返回为“undefined”。 当我将断点设置为“open”事件监听器时,“e.data”就是“undefined”。
由于某种原因,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 :(
}

谢谢你!

如果你能贴一些代码,可能会有所帮助。另外,如果你的asp脚本能正常工作,那么这似乎是一个JavaScript问题,而不是asp的问题。 - undefined
嗨@John,感谢你抽出时间来帮助我。以下是ASP代码。我知道JavaScript代码是有效的,因为它与我的PHP脚本一起工作。code 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 - undefined
除非在您的代码中有其他填充strResponse的部分,否则它将不包含除了"data:"和当前时间之外的任何内容 - 这是您希望它包含的全部吗? - undefined
如果你在js中使用完整的外部路径,比如 var source = new EventSource('http://yourdomain.com/serversend.asp');,会发生什么? - undefined
@John,使用完整的URL后仍然没有任何反应。相同的“undefined”响应。元素检查器无法读取响应。我进行了一个普通的ajax调用,并返回了预期的文本。 问题在于ASP Classic如何处理流:( 感谢您的时间! - undefined
2个回答

3

尝试这个是有效的

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

Response.Flush()


3
尝试在 Response.Write 之后使用 Response.Flush
编辑* 在 strResponse 字符串后面添加两个回车: response.Write strResponse & vbCrLf & vbCrLf

1
请问您能否解释一下为什么,并提供相应的文档参考? - undefined
参考资料是w3schools: www.w3schools.com/html/html5_serversentevents.asp。 - undefined
但这不是错误,我已经发现了:你需要在字符串后面加入2个换行符...response.Write strResponse & vbCrLf & vbCrLf - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接