Asp classic 服务器发送事件和ASP经典(使用Javascript)

Asp classic 服务器发送事件和ASP经典(使用Javascript),asp-classic,server-sent-events,Asp Classic,Server Sent Events,所以我尝试在ASP Classic中实现一些服务器端事件。这是因为我无法使用ASP Classic执行推送通知。它由Javascript和ASP代码组成。这个想法是当你有新的信息时,以声音的形式发送通知 ASP代码位于名为“poller.ASP”的文件中。它轮询私有消息,如果发现新消息,则执行此代码。代码基本上是组成服务器事件的“事件” Response.ContentType = "text/event-stream" Response.Expires = -1 response.write

所以我尝试在ASP Classic中实现一些服务器端事件。这是因为我无法使用ASP Classic执行推送通知。它由Javascript和ASP代码组成。这个想法是当你有新的信息时,以声音的形式发送通知

ASP代码位于名为“poller.ASP”的文件中。它轮询私有消息,如果发现新消息,则执行此代码。代码基本上是组成服务器事件的“事件”

Response.ContentType = "text/event-stream"
Response.Expires = -1
response.write ("retry: 10000") & vbcrlf
Response.Write("data: New Mail" & vbCrLf & vbCrLf )
Response.Flush()
还有Javascript:

 <!DOCTYPE html>
   <html><body>
    <div id="result"></div>

  <script src="/poller/audio-fx.js"></script>
  <script>
var pool = AudioFX('/poller/alert',
  { formats: ['mp3'], volume: 0.8, autoplay: false });

if (!!window.EventSource) {
  var source = new EventSource("/poller/poller.asp");
  source.onmessage = function(event) { 
document.getElementById("result").innerHTML += event.data + "<br>";
pool.play();
  }
} 
</script>
</body>
</html>

var pool=AudioFX(“/poller/alert”,
{格式:['mp3'],卷:0.8,自动播放:false});
如果(!!window.EventSource){
var source=neweventsource(“/poller/poller.asp”);
source.onmessage=函数(事件){
document.getElementById(“结果”).innerHTML+=event.data+“
”; pool.play(); } }
因此,该代码在检测到新的私有消息时接收消息。它从流(poller.asp)读取它。然而,有两个问题: 1) 这仅在脚本运行时存在新消息时有效。如果没有新消息,流似乎会关闭。假设没有新消息,然后有人给我发了一条,什么也没发生。如果在我运行脚本时有一条新消息,它会工作,但是如果我删除它并收到另一条消息,它也不会通知我。我怀疑这与关闭流有关

2) 你会注意到音频效果。JS和pool.play。这将播放一个简短的mp3“你有一条新消息”。问题是它在前两次尝试中都失败了。说我有新消息在等着。它将按照 document.getElementById(“结果”).innerHTML+=event.data+“
” 但只有这样做两次后,它才会播放音频。我想这可能是一个缓冲问题。以后每次都是这样


任何帮助都将不胜感激:)

这个想法很有趣,但我认为你不会让经典的ASP表现得像一个web套接字。相反,您可以尝试一种更简单的方法,使用
setInterval()
以固定的间隔通过AJAX请求调用ASP页面。要使其正常工作,您可能需要重新构建ASP页面以返回简单的JSON响应,然后解析客户端。这是一个有趣的想法,但我认为您不会让经典ASP表现得像web套接字。相反,您可以尝试一种更简单的方法,使用
setInterval()
以固定的间隔通过AJAX请求调用ASP页面。要使其正常工作,您可能需要重新建模ASP页面以返回简单的JSON响应,然后解析该客户端。