2016-07-15 2 views
0

서버에서 클라이언트로 전송되는 로그 메시지가 있고 서버에서 지속적으로 클라이언트에 로깅하는 로그 메시지가 있습니다. 이제 사용자에게 일부 제어 권한을 부여하기 위해 로그를 중지하고 재생할 추가 기능이 있습니다. 연결을 끊고 socket.io 연결을 끊고 다시 연결을 시작하십시오. socket.io 연결을 다시 시도하십시오. 연결을 끊으려고 멈추려 고 노력하지만 서버에 메시지를 보낼 수 없습니다. 아래 코드 나 더 나은 해결책으로 이러한 작업을 수행하는 데 문제가 있습니까? main.htmlclient에서 socket.io를 분리하고 다시 연결하는 방법은 무엇입니까?

<button type="button" class="btn btn-success" ng-click="stopLogs()">stop</button> 

ctrl.js

$scope.stopLogs = function(){ 
     socket.emit('end'); 
    } 

angularSOcketFactory.js

angular.module('App').factory('socket', function ($rootScope) { 
    'use strict'; 
     var socket = io.connect('http://localhost:3000'); 
     return { 
      on: function (eventName, callback) { 
       socket.on(eventName, function() { 
        var args = arguments; 
        $rootScope.$apply(function() { 
         callback.apply(socket, args); 
        }); 
       }); 
      }, 
      emit: function (eventName, data, callback) { 
       socket.emit(eventName, data, function() { 
        var args = arguments; 
        $rootScope.$apply(function() { 
         if (callback) { 
          callback.apply(socket, args); 
         } 
        }); 
       }) 
      } 
     }; 

}); 

server.js

var io = require('socket.io')(server); 
    io.sockets.on('connection',function(){ 
    // Producer.startProducer(); 
    ditconsumer.start(function(value){ 
     io.emit('ditConsumer',value) 
    }); 
    io.sockets.on('end', function() { 
     socket.disconnect(); 
     console.log('it will disconnet connection'); 
    }); 
}); 

답변

2

이 코드는 잘못된 것입니다 :

io.sockets.on('end',function() { 
console.log('this will disconnet socket connection'); 
io.sockets.disconnect(); 
}); 

해당 이벤트 수신기를 하나의 특정 소켓에 적용한 다음 특정 소켓 하나를 연결 해제해야합니다.

당신은 당신의 서버 코드의 일반적인 컨텍스트를 표시하지 않습니다, 그러나 그것은 다음과 같이 할 수있다 :

io.on('connection', function(socket) { 
    socket.on('end', function() { 
     socket.disconnect(); 
    }); 
}); 

또한 단지 클라이언트 분리를하지 않고 직접 그것을 수행하는 서버 요청 수 당신.

+0

서버 쪽에서 더 나은 이해를 위해 제 질문을 업데이트했지만 'stopLogs()'메소드를 클릭 할 때 클라이언트 측에서 메시지가 출력되지 않습니다. – hussain

+0

@hussain - 글쎄, 서버 코드가 여전히 잘못되어 수정해야합니다. 'io.sockets.on (...)'은 잘못되어'socket.on (...)'이어야합니다. 나는 각도를 모른다. 그래서 거기에 문제가 실제로 있다면 다른 누군가를 위해 떠날 것이다. – jfriend00

+0

'socket.on ('end')'예외를 던지고 있습니다 소켓이 정의되지 않았습니다'io.on ('end')'같은 결과로 시도했습니다. – hussain

관련 문제