Сервер отправил событие и ASP Classic (с Javascript) - PullRequest
1 голос
/ 12 апреля 2019

Итак, я пытаюсь реализовать какое-либо серверное событие в ASP Classic. Это потому, что я не могу делать push-уведомления с 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>

Таким образом, этот код работает, так как он получает сообщение при обнаружении нового личного сообщения. Это читает это из потока (poller.asp). Однако есть две проблемы: 1) Это работает, только если новое сообщение существует с момента запуска скрипта. Если нет новых сообщений, поток, кажется, закрывается. Допустим, новых сообщений нет, тогда кто-то отправляет мне одно, ничего не происходит. Если при запуске скрипта появляется новое сообщение, оно работает, но если я удаляю его и получаю другое, оно также не уведомляет меня. Я подозреваю, что это как-то связано с закрытием потока.

2) Вы заметите Audio-FX. JS и pool.play. Воспроизведение короткого mp3 "У вас есть новое сообщение". Проблема состоит в том, что это терпит неудачу на первых двух попытках. Скажем, у меня есть новое сообщение в ожидании. Он будет говорить «Новая почта» согласно document.getElementById ("result"). innerHTML + = event.data + "
" но только после этого он будет воспроизводить звук. Я думаю, может быть, это проблема буферизации. Как он играет каждый раз после этого.

Любая помощь будет оценена :)

...