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');
});
});
我更新了我的問題,以便從服務器端獲得更好的理解,但是這裏的問題是,當我點擊'stopLogs()'方法時,它甚至不會從客戶端發出消息。 – hussain
@hussain - 那麼,你的服務器代碼仍然是錯誤的,需要更正。 'io.sockets.on(...)'是錯誤的,應該是'socket.on(...)'。我不知道角度,所以如果實際上存在問題,我會將其留給別人。 – jfriend00
'socket.on('end')'拋出異常套接字沒有被定義,我用'io.on('end')'嘗試了相同的結果。 – hussain