Make pubsub example more interesting

This commit is contained in:
Alex Hultman 2019-02-09 08:45:51 +01:00
parent 8d7527520f
commit ce62261986
2 changed files with 26 additions and 8 deletions

View File

@ -13,22 +13,40 @@ const app = uWS./*SSL*/App({
maxPayloadLength: 16 * 1024 * 1024,
idleTimeout: 10,
// would be nice to have maxBackpressure to automatically close slow receivers
/* Setting 1: merge messages in one, or keep them as separate WebSocket frames - mergePublishedMessages */
/* Setting 2: compression on/off - cannot have dedicated compressor for pubsub yet */
/* Setting 3: maxBackpressure - when we want to automatically terminate a slow receiver */
/* Setting 4: send to all including us, or not? That's not a setting really just use ws.publish or global uWS.publish */
/* Handlers */
open: (ws, req) => {
/* Let all new sockets subscribe to chat topic */
ws.subscribe('chat');
/* Let this client listen to all sensor topics */
ws.subscribe('home/sensors/#');
},
message: (ws, message, isBinary) => {
console.log('Got WebSocket message!');
/* If we get a message from any socket, we publish it to the chat topic */
ws.publish('chat', message);
/* Parse this message according to some application
* protocol such as JSON [action, topic, message] */
/* Let's pretend this was a temperature message
* [pub, home/sensors/temperature, message] */
ws.publish('home/sensors/temperature', message);
/* Let's also pretend this was a light message
* [pub, home/sensors/light, message] */
ws.publish('home/sensors/light', message);
/* If you have good imagination you can also
* pretend some message was a subscription
* like so: [sub, /home/sensors/humidity].
* I hope you get how any application protocol
* can be implemented with these helpers. */
},
drain: (ws) => {
},
close: (ws, code, message) => {
// here we need to properly unsubscribe
// ws.unsubscribe('*');
/* The library guarantees proper unsubscription at close */
}
}).any('/*', (res, req) => {
res.end('Nothing to see here!');

@ -1 +1 @@
Subproject commit 5528e6f5fec2ffbd8e684e5d7d966eb0ae2bd5d5
Subproject commit 6fe717f46a0f4188e1fc929776d1b86791ec7cb0