服务器发送事件和ASP Classic(带有Javascript)

时间:2019-04-12 02:37:46

标签: asp-classic server-sent-events

所以我试图在ASP Classic中实现一些服务器端事件。这是因为我无法使用ASP Classic进行推送通知。它由Javascript和ASP代码组成。想法是在收到新消息时以声音的形式发送通知。

名为“ poller.asp”的文件中的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>

因此,此代码的工作原理是,当检测到新的私人消息时,它将接收到一条消息。它从流(poller.asp)中读取它。但是,有两个问题: 1)仅当脚本运行时存在新消息时,此方法才有效。如果没有新消息,则流似乎已关闭。假设没有新消息,然后有人给我发送了一条消息,什么都没有发生。如果在运行脚本时出现新消息,则该消息有效,但如果删除该消息并收到另一消息,则该消息也不会通知我。我怀疑这与流关闭有关。

2)您会注意到Audio-FX。 JS和pool.play。这会播放一小段mp3“您有新消息”。问题是它在前两次尝试中均失败。假设我有新消息在等待。系统会根据提示说“新邮件” document.getElementById(“ result”)。innerHTML + = event.data +“
” 但只有这样做两次之后,它才能播放音频。我认为这可能是一个缓冲问题。此后每次都播放。

任何帮助将不胜感激:)

0 个答案:

没有答案