【发布时间】:2016-06-05 18:23:25
【问题描述】:
我正在研究 slack bot,但遇到了奇怪的问题。我有一个使用 phantomJS 抓取网页的模块(通过 SpookyJS 和 CasperJS 在其之上)。我编写了这个模块并测试了它手动从命令行运行它。它运作良好。但后来我添加了抽象 Slack 实时 API 的 slackbots npm 模块,并创建了一个带有 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...
一切都挂了...
我不知道如何解决这个问题。我猜是因为slackbots 模块在我调用Bot.prototype.run 时建立了websocket 连接。有什么建议吗?
【问题讨论】:
-
可能与端口有关?也许nodejs只有一个端口可用,因此不能一次打开两个连接?
标签: javascript node.js websocket phantomjs casperjs