socket.io回调函数不起作用

时间:2015-02-19 22:56:22

标签: javascript angularjs node.js sockets callback

我曾经使用socket.io发出回调,如下所示:

客户端:

mysocket.emit('helloword', 'helloword', function(param){
        console.log(param);
    });

服务器:

var server = require('http').Server(app);
var sserver = io(server);
sserver.on('connection', function(socket){
    console.log('connection');
    socket.on('helloword', function(message, callback){
        console.log(message);
        console.log(callback+'');
        console.log('arguments', arguments);
        callback('helloword');
    })
});
server.listen(config.port);

我使用angular-socket-io作为socket.io-client的包装器。我的服务很简单:

'use strict';

angular.module('core').factory('mysocket', function(socketFactory){
    return socketFactory();
});

服务器输出:

connection
helloword
function (){
    // prevent double callbacks
    if (sent) return;
    var args = Array.prototype.slice.call(arguments);
    debug('sending ack %j', args);

    var type = hasBin(args) ? parser.BINARY_ACK : parser.ACK;
    self.packet({
      id: id,
      type: type,
      data: args
    });
  }
arguments { '0': 'helloword', '1': [Function] }

我的客户端控制台:

我的问题:

  • 为什么我的回叫没有解雇?

2 个答案:

答案 0 :(得分:1)

函数socket.on(event, callback)将侦听来自客户端的事件,然后在触发事件时运行回调。在你的情况下,当它听到'helloword'它将运行您定义为第二个参数的回调函数:function(message, callback)。您的服务器日志输出显示实际上正在运行回调中的所有console.log次调用。

答案 1 :(得分:0)

要查看客户端发生了什么,请尝试设置localStorage.debug ='*' 有关详细信息,请参阅此内容:http://socket.io/docs/migrating-from-0-9/#log-differences(假设您使用socketio 1.0 +)