2016-07-12 3 views
-1

나는 소비자를 생성하여 kafka 서버의 메시지를 듣고 있는데, 지금 은 kafka에서 메시지를 받고있다. socket.io을 사용하는 클라이언트에게이 메시지를 보내야한다. 메시지를 받으면 나는 내보낼 수출 방법을 만든다. 그래서 아래의 코드에서 나는 시작 메서드를 내 보낸 소비자와 socket.io 연결을 시작할 수있다. 그러나 던지는 예외 ./main require는 함수가 아니다. 소비자가 수신하면 어떻게 socket.io을 사용하여 메시지를 보낼 수 있습니까?함수에서 노드 모듈을 내부에서 호출하는 방법은 무엇입니까?

main.js :

var Consumer = { 
     start:function(scfun) { 
       var consumer_client = new kafka.Client(kafkaConn, clientId); 
       var client = new Client(consumer_client.connectionString, clientId); 
       var consumer = new HighLevelConsumer(client, topics, options); 
       consumer.on('message', function(message) { 
       logger.log('info', message.value); 
       scfun(message.value); 
       }); 
       consumer.on('error', function(err) { 
       console.log('error', err); 
       });   
      }; 

    }; 
    module.exports = Consumer; 

main.js

function start() { 
    var consumer_client = new kafka.Client(kafkaConn, clientId); 
    var client = new Client(consumer_client.connectionString, clientId); 
    var consumer = new HighLevelConsumer(client, topics, options); 

    startConsumer(consumer); 
}; 

function startConsumer(consumer) { 
    consumer.on('message', function(message) { 
    logger.log('info', message.value); 
    exports = module.exports = function(io) { 
     io.sockets.on('connection', function(socket) { 
     socket.emit('ditConsumer', message.value); 
     }); 
    } 
    }); 
    consumer.on('error', function(err) { 
    console.log('error', err); 
    }); 
}; 

exports.start = start; 

var ditconsumer = require('./main'); 

server.listen(3000, function() { 
    console.log('Example app listening on port 3000!'); 
    Producer.startProducer(); 
    ditconsumer.start(); 
}); 
+0

정확한 오류 란 무엇인가요? – SLaks

+0

throwing error ditconsumer가 함수가 아닙니다. – hussain

+0

startConsumer 함수를 실행할 때 코드에서 내보내기를 바꿉니다. 그 대신 새로운 부동산으로 수출을 확장하십시오. 나는 exports.startConsumer = function (io)을 의미합니다 .... –

답변

0

소원 당신을 위해이 일을 app.js app.js :

var ditconsumer = require('./main'); 

io.sockets.on('connection',function(){  
    Producer.startProducer(); 
    ditconsumer.start(function(value){ 
    io.emit('ditConsumer',value) 
    }); 
}); 

server.listen(3000, function() { 
    console.log('Example app listening on port 3000!'); 
}); 
관련 문제