即使服务器正在发送数据,也不会调用ws.onmessage

时间:2018-11-06 06:46:26

标签: websocket

我正在使用sockjs-0.3.4。 在更改页面结构之前,它可以正常工作。 但是在改变了一些东西之后。 ws.onmessage函数开始不被调用。

我通过查看devtools检查了与服务器的连接。 看起来好像是从服务器获取数据。 请帮我知道退房的意义。

enter image description here

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 :(得分:0)

statusWatcher.ws = function(err) {
            console.log("web syslog socket Error: " + err);
        };

我将上层源代码更改为下一个。.也许我错误地删除了函数名。

statusWatcher.ws.onerror = function(err) {
            console.log("web syslog socket Error: " + err);
        };