ws.onmessage не вызывается, хотя сервер отправляет данные - PullRequest
0 голосов
/ 06 ноября 2018

Я использую sockjs-0.3.4. До изменения структуры страницы она работала нормально. Однако после изменения некоторых вещей. Абсолютно ws.onmessage функция начинает не вызываться.

Я проверил соединение с сервером, посмотрев на devtools. Похоже на получение данных с сервера. Пожалуйста, помогите мне узнать, в чем смысл проверять.

введите описание изображения здесь

var statusWatcher = {
		curPage:"",
		ws: null,
		wsBaseUrl :null,
		uid: null,
		init : function(url ){
			if(statusWatcher.ws != null) return;
			console.log(statusWatcher.ws);
			console.log("wsBaseUrl:"+url)
			statusWatcher.wsBaseUrl = url;
			var browserSupport = ("WebSocket" in window)? true: false;
			if(browserSupport){
				statusWatcher.start();				
			}else{
				console.log("WebSocket is Not supported by your Web Browser!");
			}				
			//log.eventHandler(1);
		},
		start : function(){
			baseWsURL = statusWatcher.wsBaseUrl+"/statusCheck?&uid="+statusWatcher.uid;
			console.log("web socket baseurl:"+baseWsURL);
			try{
				statusWatcher.ws = new WebSocket(baseWsURL);
			} catch (e){
				console.log(e);
			}
			
			statusWatcher.ws.onopen = function() {
				console.log("web socket Opened! ");
			};


			statusWatcher.ws.onclose = function() {
				console.log("web syslog socket Closed! ");
			};

			statusWatcher.ws = function(err) {
				console.log("web syslog socket Error: " + err);
			};
			statusWatcher.ws.onmessage = function(evt) {
				console.log("get message...");
				//console.log("page:"+curPage);
				var data = evt.data;
				console.log(data);
				var msg;
				if(curPage =="main") return;
				var e = JSON.parse(data);
				
				
					if(e.status =="COMPLETE"){
						$("#" + e.groupId).text("complete");
						$("#" + e.groupId).removeClass('run error');
						$("#" + e.groupId).addClass('complete');
						statusWatcher.updateScoreState(e.groupId, "COMPLETE", e.topRplRate,e.topKwdRate);
					}else if(e.status == "ERROR"){						
						$("#" + e.groupId).text("error");
						$("#" + e.groupId).removeClass('run complete');
						$("#" + e.groupId).addClass('error');
						statusWatcher.updateScoreState(e.groupId, "ERROR");
					}else{
						$("#" + e.groupId).html("running("+e.progress+"/"+e.total+")");
						$("#" + e.groupId).removeClass('error complete');
						$("#" + e.groupId).addClass('run');
						statusWatcher.updateScoreState(e.groupId, "RUNNING");
					}
				
			};
	
			
		},
    		}
}
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">

    <script src="<c:url value="js/fileuploadMain/statusWatcher.js"/>"></script> 
</head>
<body>
 	<!--header-->
    <c:import url="/WEB-INF/jsp/fileupload/header.jsp" /> 
    
    <!--contents--> 
    <div class="contents">
     <div class="container" id="container">
     </div>
    </div>
     <script>
        $(document).ready(function() {
        	 var nice = $("html").niceScroll();  // The document page (body)

            $(".select-items").niceScroll({
                zindex: "auto",boxzoom:false
            });
            
        	$("#container").load("group.do");
        	calaendar.init();
	 
        	
        	var wsBaseUrl = "ws://"+document.location.host+"<c:out value="${pageContext.request.contextPath}"/>";
        	
        	statusWatcher.init(wsBaseUrl);
        });
 </script>
</body>
</html>

1 Ответ

0 голосов
/ 07 ноября 2018
statusWatcher.ws = function(err) {
            console.log("web syslog socket Error: " + err);
        };

Я изменил верхний исходный код на следующий .. Возможно, я ошибочно удалил имя функции ..

statusWatcher.ws.onerror = function(err) {
            console.log("web syslog socket Error: " + err);
        };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...