Comments (7)
This doesn't take care of the custom events issue, but is it currently possible to provide an array of event filters the same way it's done for hooks? If not, that would be a really great thing to include, imo. Then we can have a filter library the same way that we will for hooks.
from socketio.
Not at the moment but feathersjs-ecosystem/commons#15 will add all of that. As you suggested, event filtering works pretty much the same as hooks, except that you will - additionally to the hook object - also get the current dispatch data and the connection (params
in the old hooks). So you can do things like:
const todos = app.service('todos');
// Blanket filter out all connections that don't belong to the same company
todos.filter(function(data, connection) {
if(data.company_id !== connection.user.company_id) {
return false;
}
return data;
});
// After that, filter todos, if the user that created it
// and the connected user aren't friends
todos.filter('created', function(data, connection, hook) {
const todoUserId = hook.params.user._id;
const currentUserFriends = connection.user.friends;
if(currentUserFriends.indexOf(todoUserId) === -1) {
return false;
}
return data;
});
// Other ways to use it
todos.filter({
removed: [a, b],
updated: function(data, connection, hook, callback) {}
});
All of that will be backwards compatible with the legacy created
, updated
etc. methods.
Would you mind pasting the above snippet into the docs so that we don't forget about?
from socketio.
Nope, I don't mind. I added it to the events page.
from socketio.
Now that this landed in feathers-commons
it should be good to close.
from socketio.
I still have to make a feathers-socket-commons
and feathers-socketio
and feathers-primus
release. Just wrapping up a couple of tests but should be prety quick.
from socketio.
At https://docs.feathersjs.com/api/events.html#event-filtering it is written :
Filter functions run for every connected client on every event and should be optimized for speed and chained by granularity.
I am wondering if for some cases, instead of running a filter for each connection, that would not be more efficient to reverse the relation and just group the connections by criteria (e.g. by room), run no filters and send the grouped connections the event?
Would this way of filtering be allowed by / pluggable into the current implementation of feathersjs-socketio
?
from socketio.
Nevermind, I found the related issue.
feathersjs/feathers#388 (comment)
from socketio.
Related Issues (20)
- Options are not passed to socket-io HOT 2
- How to stop listening to socket server from client service HOT 5
- Updated from feathers-socketio to @feathersjs/socketio; error message HOT 1
- How to change 5000ms timeout? HOT 2
- My chat room sometimes the user's text has become????? HOT 2
- `yarn add @feathersjs/socketio` gets stuck HOT 2
- Connection closed before receiving a handshake response HOT 3
- User object missing in logout callback args under certain conditions HOT 7
- An in-range update of feathers-hooks is breaking the build 🚨
- Add Socket.io v2 support HOT 2
- An in-range update of mocha is breaking the build 🚨 HOT 1
- An in-range update of babel-core is breaking the build 🚨 HOT 1
- Connecting to sockets on a path HOT 1
- Maybe acting wrong please look into my test app HOT 1
- Connection closed before receiving a handshake response HOT 7
- An in-range update of babel-cli is breaking the build 🚨 HOT 2
- An in-range update of mocha is breaking the build 🚨 HOT 2
- Filter service updates by ID HOT 1
- Remote address IP is always undefined HOT 1
- feathers / graphql using REST / Sockets HOT 8
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from socketio.