2012-08-29 36 views
6

Tôi đang cố tạo một trang sử dụng đối tượng EvenSource (trong javascript) để tạo Sự kiện được Máy chủ gửi (sao chổi). Tôi đọc nhiều bài hướng dẫn về nó và đã không tìm thấy một giải thích các câu hỏi sau:Xử lý lỗi trong EventSource

  1. Khi tôi đăng ký vào "onerror" sự kiện của EventSource - kiểu của tham số tôi nhận được là gì? Làm thế nào để tôi biết chính xác lỗi là gì?

  2. Tôi biết rằng EvenSource có tính chất đọc và thay đổi tùy thuộc vào trình duyệt. Tại sao các thay đổi của tôi thay đổi thành 0 sau mỗi sự kiện "onmessage" xảy ra? (tôi sử dụng chrome).

  3. Làm cách nào để chứng minh rằng kết nối của tôi với máy chủ vẫn được kết nối và không kết nối lại mỗi lần?

Trình duyệt: Chrome.

Server Side:.. Java (nếu nó có liên quan ví dụ tôi đưa ra là trong Java EE preview Nhưng tôi sẽ làm việc trên WebLogic 10R3

gì xảy ra trong ví dụ của tôi là dữ liệu đang được gửi từ máy chủ cho khách hàng, so với "onerror" sự kiện xảy ra (readyState là 0) và sau 3 giây (mặc định cho chrome) nó kết nối lại và gửi dữ liệu một lần nữa

mã javascript:.

var source = new EventSource("TrySRV"); 
source.onmessage = function(event){ 
    alert(event.data); 
} 

source.onerror = function(event){ 
    alert(source.readystate); 
} 

Mã Java:

response.setHeader("Content-Type", "text/event-stream"); 
response.setHeader("Cache-Control", "no-cache"); 
response.getWriter.write("Hello World"); 

Nếu còn thiếu điều gì khác mà bạn muốn biết - hãy cho tôi biết. Hy vọng bạn sẽ có thể giúp tôi.

Cảm ơn!

Trả lời

3

Bạn cần giữ kết nối trên máy chủ, thay vì phải trả lời trên máy chủ và đóng.

Vui lòng xem http://jcp.org/en/jsr/detail?id=315 hoặc máy chủ Glassfish/Grizzly/Jetty.