2016-03-31 7 views
0

Я создал сценарий ASP со всеми заголовками, необходимыми для событий, отправленных сервером. Работает сценарий клиентской стороны. Я тестировал его с помощью PHP-скрипта, и он отлично работает. ASP-скрипт работает, и он возвращает ожидаемое сообщение, если вы вызываете его из строки URL-адреса, но когда javascript вызывает его, инспектор элементов возвращает данные как «undefined». Когда я устанавливаю точку останова на «открытый» прослушиватель событий, «e.data» «undefined».Server Sent Event и asp classic

По какой-то причине Javascript не принимает текст 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 :(
} 

Спасибо!

+0

Это может помочь, если вы вывесили код. Кроме того, если ваш скрипт asp работает, это звучит так, как будто это проблема с javascript, а не asp. – John

+0

Привет, Джон, спасибо, что нашли время, чтобы помочь мне. Код ASP ниже. Я знаю, что код javascript работает, потому что он работает с моим PHP-скриптом. 'code' strResponse = strResponse & "данные:" & сейчас() Response.Buffer = истинная Response.Charset = "UTF-8" Response.ContentType = "текст/событие потока" response.AddHeader" content-Type "," text/event-stream; charset = UTF-8 " response.AddHeader" Cache-Control "," no-cache " response.AddHeader" Content-Length ", len (strResponse) ответ. AddHeader «Connection», «Keep-Alive» response.Write strResponse – AndreSites

+0

, если в вашем коде, который заполняет 'strResponse', что-то еще не было, в нем не будет ничего, кроме« данных: », а текущее время - это все, что вы хотите это содержать? – John

ответ

0

Попробуйте использовать Response.FlushResponse.Write после

Edit * Положите две входит после строки strResponse: response.Write strResponse & vbCrLf & vbCrLf

+1

Не могли бы вы объяснить, почему и ссылки на соответствующую документацию –

+0

Ссылка является w3schools:. Www.w3schools.com/html/html5_serversentevents.asp –

+0

Но это не эррос, я обнаружил: вам нужно положить 2 входа после строки ... 'response.Write strResponse & vbCrLf & vbCrLf' –