방금 socket.io를 선택하기 시작했습니다. angular.js에서 사용하려고하는데 모든 것이 잘 작동합니다. 그러나 계속 여러 번 반환됩니다.
내 controller.js에서
socketio.emit('GameOver',$scope.currentPlayer.Name);
socketio.on('GameOverEmit',function(data){
if(data === $rootScope.user.user_name){
var result = {
opponent : rdyplayers.user_name,
result : "won"
};
// keep getting multiple result
console.log(result);
}else{
var result = {
opponent : rdyplayers.user_name,
result : "lose"
};
// keep getting multiple result
console.log(result);
}
});
내 server.js에서
io.sockets.on('connection', function (client) {
client.user_name = user.user_name;
//Useful to know when someone connects
console.log('\t socket.io:: player ' + client.user_name + ' connected');
// playerturn
client.on('PlayerTurn',function(data){
io.emit('PlayerTurnEmit',data);
});
// game over
client.on('GameOver',function(data){
io.emit('GameOverEmit',data);
});
// button disabled
client.on('PlayerButtonDisabled',function(data){
io.emit('PlayerButtonDisabledEmit',data);
});
//When this client disconnects
client.on('disconnect', function () {
//Useful to know when someone disconnects
console.log('\t socket.io:: client disconnected ' + client.user_name );
io.emit("disconnected",client.user_name);
}); //client.on disconnect
}); //io.sockets.on connection
socket.io를 올바른 방식으로 사용하고 있습니까? 모든 사람에게 데이터를 브로드 캐스트하려면 데이터를에 전달하고 데이터를 서버에 전달하고 프런트 엔드로 다시 전달하는 것과 같은 방식으로 emit
데이터 브로드 캐스트를 가져옵니다 on
.
controller.js로 인해 페이지를 다시 방문 할 때마다 새 소켓이 설정되므로 사용자가 탭을 떠나거나 닫을 때마다 모든 리스너가 제거됩니다. 내 service.js에 getsocket을 추가하여 문제를 해결했습니다.
ttt.factory('socketio', ['$rootScope', function ($rootScope) {
'use strict';
var socket = io.connect();
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);
}
});
});
},
getSocket: function() {
return socket;
}
};
}]);
내 controller.js에서 나는
$scope.$on('$destroy', function (event) {
socketio.getSocket().removeAllListeners();
});
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다