В настоящее время у меня проблема с SSE и Windows XP. Исходный код ниже работает в каждом Chrome, который я пробовал, за исключением Chrome в Windows XP (?) Не знаю, почему. Это предназначено для использования на панели управления, где пользователи должны использовать Chrome. Другими словами, меня не интересуют IE, Firefox и т.д.
Проблема: события на стороне сервера работают повсюду (Chrome), но не в Windows XP (Chrome). Когда я говорю, что это работает, я имею в виду, что вызывается обработчик сообщений.
Код
-
Код Javascript
if (!!window.EventSource) { console.log("Event source available"); var source = new EventSource('/admin/systemalert'); source.addEventListener('message', function(e) { console.log(e.data); }); source.addEventListener('open', function(e) { console.log("Connection was opened."); }, false); source.addEventListener('error', function(e) { if (e.readyState == EventSource.CLOSED) { console.log("Connection was closed."); } else { console.log(e.readyState); <-- in windows XP it prints Error here } }, false); } else { console.log("No SSE available"); }
-
Кодовый код сервера
@Controller @RequestMapping("/admin/**") public class AdminController { @RequestMapping("systemalert") public @ResponseBody String sendMessage(HttpServletResponse response) { Random r = new Random(); response.setContentType("text/event-stream"); try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } return "data:Testing 1,2,3" + r.nextInt() +"\n"; } }
Как указано в коде, строка console.log(e.readyState); печатает "Ошибка" при использовании Chrome в Windows XP. Есть идеи? Кто-нибудь видит что-то не так с исходным кодом?
Спасибо заранее. Агустин