Comments (4)
Why don't you just keep an index of clients, and then go through it by using .send()?
So for example, (untested code, just wrote this here)
var channels = {};
io.listen(server, {onClientMessage: function(msg, client){
var obj = JSON.parse(msg);
if (msg.subscribe){
if (!channels[msg.subscribe]) channels[msg.subscribe] = [];
channels[msg.subscribe].push(client);
} else if (msg.publish) channels[msg.publish].each(function(c){ c.send({message: msg.message });
}});
socket.io
gives you the flexibility to create whatever mechanism you want. You can also use Redis pubsub!
from socket.io.
In my opinion socket.io is more of a foundation that provides the tools necessary to build higher level protocols like a pubsub system. However, it should be noted that there is (currently) at least a server-side broadcast method that sends a message to all connected clients.
EDIT: Oops, that's what I get for not refreshing first before posting ;-)
from socket.io.
The problem is that there's no protocol that is a definite a solution to all problems. Even pub/sub falls short for many applications. I won't bundle pub/sub into socket.io, i'd much rather see a module that implements it (eg: socket.io-channels.js
).
There're a couple of node projects that just implement one protocol, say, bayeux. And while bayeux might work perfectly for a subset of applications, it's useless in others.
from socket.io.
I'll probably go the Redis route.
Thanks for the hint!
from socket.io.
Related Issues (20)
- How to leave all rooms the socket is currently in and join only one room? HOT 2
- jwt authentication needed HOT 5
- Calling io.emit("event") with events that has no arguments result in TypeScript errors HOT 4
- TRANSPORT_HANDSHAKE_ERROR after upgrading to socket.io v4 HOT 6
- Can't emit namespace events without arguments in TS HOT 3
- Sending one message more than one time after network disconnections and reconnects. HOT 2
- Issue with Socket.io Client using Next.js - Memory leak and JavaScript heap out of memory HOT 1
- Including Protocol Parameter in Socket Connection Creation in iOS HOT 1
- Type error when using socket.timeout.emitWithAck HOT 3
- If the server's upstream bandwidth is used up, it will generate a large number of pingTimeoutTimers, which in turn will cause memory leaks HOT 1
- Not able to pass prop socket HOT 2
- 🐛 Error in serving socket.io.min.js HOT 1
- Uncaught ReferenceError: Buffer is not defined HOT 2
- Page Refresh issue with socket HOT 2
- maxHttpBufferSize option don't work with bun HOT 1
- emitWithAck does not throw on disconnect HOT 3
- Make `emitWithAck` for a room say which socket(s) failed to ack HOT 1
- Connection recovery doesn't work HOT 2
- Allow to bind socket.io to bun built in server. HOT 2
- authToken = null in springboot despite set by the client HOT 1
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 socket.io.