2016-06-05 2 views
0

나는 헐렁한 봇에서 일하고 있으며, 궁금한 문제가 있습니다. 웹 페이지를 phantomJS (SpookyJS & CasperJS를 통해)를 사용하여 긁어내는 모듈이 있습니다. 필자는이 모듈을 작성하고 수동으로 명령 줄에서 실행하여 테스트했습니다. 잘 작동한다. 그런 다음 슬랙 실시간 API를 추상화하고 보트 클래스로 모듈을 생성 한 slackbots npm 모듈을 추가했습니다. 이 봇 모듈은 코드 (phantomJS)를 긁어 내 모듈이 필요합니다 및 메시지 이벤트가 트리거 할 때 그 함수를 호출WebSocket 연결이 열려있는 동안 PhantomJS가 시작되지 않습니다.

var getAnswer = require('./getAnswer'); 

myBot.prototype._onMessage = function (message) { 
    if (this._isChatMessage(message) && 
     this._isChannelConversation(message) && 
     this._isMentioningMe(message)) { 

     this._reply(message); 
    } 
}; 

this._reply을 기본적으로 그냥 getAnswer(originalMessage.text)하고 다음 self.postMessageToChannel(channel.name, reply, {as_user: true});

getAnswer는 약속을 반환 호출하지만 그것은 결코 성취되지 얻을 . 나는 CasperJS이 verbose 될 만들어 내가이 문제를 해결하는 방법, 아무 생각

...

[info] [phantom] Starting... 

모든 것이 중단 후 아무 변화가 없다고 보았다. 나는 Bot.prototype.run이라고 부를 때 slackbots 모듈이 websocket 연결을 설정했기 때문이라고 생각한다. 어떤 제안?

+0

아마 포트와 관련이 있습니까? 어쩌면 nodejs가 사용할 수있는 포트가 하나 뿐이므로 한 번에 두 개의 연결을 열 수 없습니까? – dKab

답변

0

내가 말했듯이 나는 Spooky를 사용하여 CasperJS 프로세스를 생성합니다. 나는 무시 무시한 문서 페이지에 가서이 읽기 :

특히, 각 으시시 인스턴스 는 부트 스트랩 스크립트를 실행하는 아이 캐스퍼 프로세스를 생성합니다. 부트 스트랩 스크립트는 트랜스 포트 (HTTP 또는 stdio)를 통해 부모 Spooky 인스턴스의 명령을 수신하는 JSON-RPC 서버를 설정합니다. 이 스크립트는 stdout을 통해 상위 Spooky 인스턴스에 이벤트를 보내는 JSON-RPC 클라이언트도 설정합니다.

전송으로 http을 사용했는데 작동하지 않아 stdio로 변경하여 도움이되었습니다. 누군가가 설명 할 수 있다면 감사하겠습니다. 도움이 되었습니까?