Как удалить обработчик .on для адаптера слабых событий - PullRequest
0 голосов
/ 02 июля 2019

У меня есть адаптер событий с именем slackEvents. Он вызывает event каждый раз, когда кто-то публикует сообщение в моем слабом приложении. У меня есть это в функции websocket, чтобы я мог передать event с сервера клиенту. Он работает нормально, но единственная проблема заключается в том, что если веб-сокет инициализируется более одного раза, то event также сработает более одного раза.

Я пытался поместить каждую вещь в ее собственную функцию, но я думаю, что единственный способ заставить это работать: A) Уметь ws.send вне блока wss.on('connection, или B) Сбросить slackEvents иметь ноль .на событиях.

const slackEvents = createEventAdapter(process.env.SLACK_SIGNING_SECRET);
const WebSocket = require('ws');
app.use('/slackevents', slackEvents.expressMiddleware());
// received text
wss = new WebSocket.Server({server: server});
// wss.close();

wss.on('connection', function connection(ws) {
    console.log("=================websocket server online=============")
    // receive chat
    slackEvents.on('message', (event) => {
        // console.log(event);
        ws.send(JSON.stringify({text: event.text, userid: event.user, channel: event.channel}));
        console.log(`Received a message event: user ${event.user} in channel ${event.channel} says ${event.text}`);
    });
});

Вывод будет выглядеть так:

Received a message event: user XXXXXXXX in channel XXXXXXXX says hi again
Received a message event: user XXXXXXXX in channel XXXXXXXX says hi again
Received a message event: user XXXXXXXX in channel XXXXXXXX says hi again
Received a message event: user XXXXXXXX in channel XXXXXXXX says hi again
Received a message event: user XXXXXXXX in channel XXXXXXXX says hi again
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...