2014-10-16 99 views
0

我用液鹼中和Socket.io,我有一個問題,「火」發出的acknowleage回調..離子,Socket.io和AngularJS,Acknowleage不起作用

在正常的JavaScript客戶端是:

function ack(response){ 
console.log(response); 
} 
socket.emit('message',{data:"data"}, ack); 

當服務器recibe該消息的客戶端火該功能,服務器側是..

socket.on('message',function(data,fn){ 
fn({data:"response"}); 
}); 

所以,當服務器執行的FN({數據: 「響應」} ),客戶開火了功能。

我建立與離子框架此工廠:

services.factory('$socket', ['$rootScope', function($rootScope) { 

    var socket = io.connect('http://127.0.0.1:9564'); 

    function on(eventName, callback){ 

    console.log(eventName); 

    socket.on(eventName, function() { 
     var args = arguments; 
     $rootScope.$apply(function() { 
     callback.apply(socket, args); 
     }); 
    }); 
    } 

    function emit(eventName, data, callback){ 
    socket.emit(eventName, data, function() { 
     var args = arguments; 
     $rootScope.$apply(function() { 
     callback.apply(socket, args); 
     }); 
    }); 
    } 

    return { 
    on: on, 
    emit: emit 
    }; 
}]); 

在我UserCtrl我嘗試以這種方式來使用:

function OnLogin(data){ 
     console.log(data); 
     $scope.closeLogin(); 
    } 

    $scope.doLogin = function() { 
     $socket.emit('user:login', $scope.loginData, OnLogin); 
    }; 

的問題是,該功能OnLogin不會被調用,我嘗試把這個函數放到$ scope.OnLogin中,但是是一樣的。

Eny對此有何解決方案?

感謝

回答

0

你確認URL本地主機是添加腳本一樣嗎? (與包括其他js腳本,內部js文件之上?)

+0

是的,問題是在AndroidManifiest互聯網permition。 :P。謝謝。 – cmarrero01 2014-12-29 11:42:44