Subj : webv4 add menu items To : echicken From : Roxanne Date : Sun Apr 05 2020 07:32 pm > Re: webv4 add menu items > By: Mortifis to echicken on Sun Apr 05 2020 03:54:51 > The file root/api/events.ssjs is an HTTP EventSource and has the emit() > function in it. > The client requests this page and remains connected. Events are streamed to > tbe browser as they happen. This was a change I introduced in a move away > from having the browser poll the server at intervals for updates (new > telegrams, who's online, etc.). > The event emitters are in lib/events/. Clients can subscribe to any of the > event types in there. > An event emitter must expose a 'cycle' function. events.ssjs will call this > function during its loop. The 'cycle' function should check for new data to > send, and then push it to the client. > Pushing an event to the client is a matter of calling 'emit', as in: > emit({ event: 'my_event', data: 'some data' }); > or: > emit({ event: 'an_event', data: { an: 'object' } }); > 'data' can be a string or an object. > On the client side, there's a function included in (I think) every page > called registerEventListener, so you would need to do something like this, > client-side, in JS: > registerEventListener('my_event', function (e) { > const data = JSON.parse(e.data); > }); > Now whenever the server pushes a 'my_event' to the client, this function will > be called. You can do whatever you need to with 'e', which is the object that > your event emitter passed to emit(). > --- > echicken excellent explaination, thank you! --- þ Synchronet þ AlleyCat! BBS Lake Echo, NS Canada .