簡體   English   中英

Websocket連接打開時PhantomJS無法啟動

[英]PhantomJS doesn't start while websocket connection is open

我正在研究Slack機器人,並且遇到了奇怪的問題。 我有一個模塊,可以使用phantomJS抓取網頁(通過其頂部的SpookyJS和CasperJS)。 我編寫了此模塊,並對其進行了測試,以從命令行手動運行它。 它運作良好。 但是隨后我添加了slackbots npm模塊,該模塊抽象了Slack實時API,並創建了帶有bot類的模塊。 這個bot模塊要求我的模塊具有抓取代碼(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連接。 有什么建議么?

正如我所說的,我使用Spooky生成CasperJS子進程。 我去了Spooky文檔頁面並閱讀以下內容:

具體來說,每個Spooky實例都會生成一個運行引導腳本的Casper子進程。 引導腳本設置了一個JSON-RPC服務器,該服務器通過傳輸(HTTP或stdio)偵聽來自父Spooky實例的命令。 該腳本還設置了一個JSON-RPC客戶端,該客戶端通過stdout將事件發送到父Spooky實例。

我將http用作傳輸工具,但它不起作用,因此我將其更改為stdio並提供了幫助。 如果有人可以解釋為什么有幫助,我將不勝感激。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM