2014-10-16 64 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