Ich arbeite an Slack Bot und ich habe seltsames Problem angetroffen. Ich habe ein Modul, das Web-Seite mit phantomJS (via SpookyJS & CasperJS auf der Oberseite) kratzt. Ich schrieb dieses Modul und testete es manuell von der Kommandozeile aus. Es läuft gut. Aber dann habe ich slackbots
npm Modul hinzugefügt, das Slack Realtime API abstrahiert, und ein Modul mit bot-Klasse erstellt. Dieser Bot Modul benötigt mein Modul mit Code Schaben (PhantomJS) und ruft seine Funktion als Nachrichtenereignis auslöst:PhantomJS startet nicht, während Websocket-Verbindung geöffnet ist
var getAnswer = require('./getAnswer');
myBot.prototype._onMessage = function (message) {
if (this._isChatMessage(message) &&
this._isChannelConversation(message) &&
this._isMentioningMe(message)) {
this._reply(message);
}
};
this._reply
im Grunde nur Anrufe getAnswer(originalMessage.text)
und dann self.postMessageToChannel(channel.name, reply, {as_user: true});
getAnswer ein Versprechen gibt, aber es ist nie bekommen erfüllt . Ich machte CasperJS verbose
sein und sah, dass nichts passiert, nachdem
[info] [phantom] Starting...
Alles nur hängt ...
Ich habe keine Ahnung, wie dieses Problem zu beheben. Ich denke, es ist, weil slackbots
Modul Websocket-Verbindung herstellt, wenn ich Bot.prototype.run
anrufen. Irgendwelche Vorschläge?
Vielleicht hat es etwas mit Ports zu tun? Vielleicht hat nodejs nur einen Port zur Verfügung und kann daher nicht zwei Verbindungen gleichzeitig öffnen? – dKab