У меня есть адаптер событий с именем 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