2016-07-15 15 views
0

私は、サーバーからクライアントに送信され、サーバーとログオンクライアントから一貫して来ているログメッセージを持って、今私はいくつかのコントロールを与えるためにログを停止し、再生する追加の機能を持っているので、接続を切断してsocket.ioの接続を解除してからもう一度接続を開始しますsocket.io接続を切断するために停止していますが、サーバーにメッセージを送信できませんでした。 main.htmlを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')'が例外を投げていますsocketが定義されていません 'io.on( 'end')'と同じ結果が出ました。 – hussain

関連する問題