-
-
Save olaferlandsen/f62934e4d8593820874eb95f2d762a0f to your computer and use it in GitHub Desktop.
Feathers Buzzard improved real-time event filtering dispatchers
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
app.service('messages').dispatch('eventname', (message, hook) => { | |
// Just dispatch to one user | |
if(message.isPrivate) { | |
return app.channel(message.receiver_id); | |
} | |
// Returning falsy or nothing will do nothing | |
}); | |
// Send to a certain room | |
app.service('messages').dispatch('eventname', (message, hook) => { | |
return app.channel(`rooms/${message.roomId}`); | |
}); | |
// EVERYONE | |
app.service('messages').dispatch('eventname', (message, hook) => { | |
return app.channel(app.channels); | |
}); | |
// Filter connections manually, e.g. if the connection user and message user are friends | |
// This works similar to the old event filters | |
app.service('messages').dispatch('eventname', (message, hook) => { | |
return app.channel(app.channels).filter(connection => connection.user.friends.indexOf(message.user) !== -1); | |
}); | |
// Modify the data that are sent to the channel for that event | |
app.service('messages').dispatch('eventname', (message, hook) => { | |
const modifiedMessage = cloneAndModify(message); | |
return app.channel(`rooms/${message.roomId}`, `rooms/general`).send(modifiedMessage); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment