2014-12-03 2 views
0

[추천하지 않음] ok 특정 포트에 대한 연결을 열었습니다. 따라서 동일한 포트에 대한 두 번째 연결을 열 수 없습니다.여러 웹 소켓 java

답변을 찾는 데 너무 오래 걸린 것을 알고, 나는이 질문을 떠날 것입니다.

동일한 웹 페이지에서 실행중인 websocket 인스턴스가 둘 이상일 수 있는지 알고 싶습니다. 학습을 위해 응용 프로그램을 만들고 있는데 알림과 분리 된 알림 상자를 같은 페이지에 표시하고 싶습니다.

자바에서 websocket을 만들고 있는데, 저는 struts 2 프레임 워크를 사용하고 있습니다. 자바 스크립트는 클라이언트 측을 처리합니다. 나는 이런 식으로 뭔가를해야 할 기능의 보조 "세트"와 같은 웹 소켓 클래스의 새 인스턴스를 만들어보십시오거야

<script language="javascript" type="text/javascript"> 
     var wsPath = "<s:url value='/websocket' />" + isComment + id; 
     var wsUri = "ws://" + window.location.host + wsPath; 
     var websocket = new WebSocket(wsUri); 

:

websocket.onopen = function(evt) { onOpen(evt) }; 
websocketnotifications.onopen = function(evt) { onOpenNotifications(evt) }; 

나는이 있는지 알고 싶습니다 그것을하는 정상적인 방법이나 더 좋은 방법이 있다면. 왜냐하면 나는 다른 해결책을 찾지 못하기 때문에 올바른 방법으로 구현하고 싶습니다.

+0

없음 당신은 한 페이지에 여러 웹 소켓이 없습니다 질수. – Secondo

+0

FullFeatured Broker를 사용하고 있습니까? 또는 구성을 게시 할 수 있습니까? – Secondo

+0

'ok 나는 특정 포트에 대한 연결을 열고 그 포트를 열어두기 때문에 동일한 포트에 두 번째 연결을 열 수 없습니다. '이것은 같은 페이지에서도 마찬가지입니다. 왜 현재 websocket을 사용하지 않습니까? – Secondo

답변

0

달성하려는 목표는 무엇입니까? 서버에서 수신 대기하는 여러 기능이 있습니까?

샘플 코드 조각은

var contextPath = "${pageContext.request.contextPath}"; 

    var socket = new SockJS("http://localhost:9991/BlackJackServer/ws"); 

    var stompClient = Stomp.over(socket); 

    var connectCallback = function() { 
      // This how I populate multiple functions when server send a message to this topics 
      stompClient.subscribe('/topic/lobby', renderLobby); 
      stompClient.subscribe('/topic/${player.username}/updatePlayerStatus', renderPlayerStatus); 
      stompClient.subscribe('/topic/${player.username}/renderPlayerChips', renderPlayerChips); 
    }; 

    var errorCallback = function(error) { 
      alert("Server Maintenance"); 
    }; 

    stompClient.connect({}, connectCallback, errorCallback); 

    //Close the WebSocket When Refreshing or Reloading the Page.  
    window.onbeforeunload = function() { 
     // disable onclose handler first 
     socket.onclose = function() {}; 
     socket.close(); 
    }; 

    function renderPlayerStatus(response){ 
     var status = response.body; 
     if(status == '"ONLINE"'){ 
      location.reload(); 
     } 
    } 

    function renderPlayerChips(response){ 
     var updatedPlayerChips = response.body; 
     $('#chips').empty(); 
     $('#chips').append("Chips : "+updatedPlayerChips); 
    }