我有一些来自服务器的日志信息,它们持续地从服务器传递到客户端并记录到客户端中。现在我需要添加额外的功能,以便停止和播放这些日志,以提供给用户一些控制。因此,我考虑在停止时断开socket.io
连接,在播放时重新连接socket.io
。首先我尝试通过停止断开连接,但是我无法向服务器发送消息。你认为下面的代码有什么问题吗?或者有更好的解决方案来实现这些任务吗?
main.html
<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()
方法时,甚至没有从客户端发出消息。 - hussainio.sockets.on(...)
是错误的,应该是socket.on(...)
。我不懂Angular,如果那里真的有问题,我会把它留给其他人处理。 - jfriend00socket.on('end')
抛出异常,提示socket
未定义。我尝试使用io.on('end')
,但结果相同。 - hussainsocket.connect()
重新连接连接吗? - hussain