2014-02-15 2 views
1

을 concating하지!의콜백 핸들러가이 코드를 사용하고 문자열

if (msg[0] == '!web') 
{ 
    var result = '\x032[\x02status\x02]\x03 Web: '; 

    checkPortTCP('127.0.0.1', 80, function() { 
     result += JSON.stringify(this).slice(1, -1); 
    }); 

    bot.say(channel, result); 
} 

내 채널에서 웹을 입력하면 결과는 다음과 실제 출력없이

[status] Web: 

.

checkPortTCP :

function checkPortTCP(host, port, cb) 
{ 
    net.createConnection(port, host).on("connect", function(e) { 
     cb.call("online"); 
    }).on("error", function(e) { 
     cb.call("offline"); 
    }); 
} 

내가 IRC에 대한 상태 봇을하고있다. 최종 결과는 ...이어야합니다. 웹 : 온라인/오프라인

result += JSON.stringify(this).slice(1, -1); 

결과 변수를 연결 한 다음 내 채널에 말해야합니다. 그러나 어떤 이유로 문자열을 연결하지 않습니다.

감사합니다. checkPortTCP 콜백이 지금 당장 실행하지만 약간의 지연 때문에

+0

에 오신 것을 환영합니다. 귀하의 게시물에 명확한 질문을 공식화하십시오. 도움이 필요한 내용을 말하기는 어렵습니다. – simbabque

+0

@simbabque 게시물을 편집했습니다. – user3125559

+0

http://jsfiddle.net/simbabque/P4U3M/에 간단하게 설명하면 문제가'result + ='줄에 없다는 것을 알 수 있습니다. 대신에, on() 핸들러가 있어야한다. 그들은 작동하지 않는 것 같습니다. 나는 노드에 익숙하지 않아 더 이상 도울 수 없다. 기본 핸들러를 추가하거나'createConnection' 메소드에 대한 문서를보십시오. – simbabque

답변

2

문제가 발생합니다, 그래서 당신의 예에서 bot.say(channel, result);bot.say(channel, result); 콜백 checkPortTCP 내부를 붙여 result += ...

전에 시도를 실행하는 발생합니다. 여러 서비스를 확인하고 싶은 경우 다음과 같이 쓸 수 있습니다

var result = '\x032[\x02status\x02]\x03 Web: '; 

checkPortTCP('127.0.0.1', 80, function() { 
    result += JSON.stringify(this).slice(1, -1); 
    bot.say(channel, result); 
}); 

업데이트 : 그래서 것

checkPortTCP('127.0.0.1', 80, function() { 
    result += JSON.stringify(this).slice(1, -1); 

    checkPortTCP('127.0.0.1', 81, function() { 
     result += JSON.stringify(this).slice(1, -1); 

     bot.say(channel, result); 
    }); 
}); 

두 서비스가 확인됩니다,하지만 당신은 할 수 있습니다 더. 하나의 수표를 다른 수표에 중첩시키고 마지막 콜백 전화 bot.say 메서드

+0

이것이 작동하지만 최종 목표는 여러 상태로 응답하는 상태 여야합니다 (예 : NP : 온라인, DP : 오프라인, 웹 : 온라인, 인증 : 오프라인 그러나 이것은 정답입니다. – user3125559

+0

@ user3125559 내 게시물을 편집하여 질문에 답변하려고합니다. – Curious

+0

감사합니다. 작동 중입니다! – user3125559

관련 문제