[英]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.