Итак, я пытаюсь реализовать какое-либо серверное событие в 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 + "
"
но только после этого он будет воспроизводить звук. Я думаю, может быть, это проблема буферизации. Как он играет каждый раз после этого.
Любая помощь будет оценена :)