mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-23 15:22:41 +01:00
e0087a9f7a
Summary: Ref T6559. Adds a "JX.Leader" primitive to replace the synchronization over Flash. This does a couple of things: - Offers an "onBecomeLeader" event, which we can use to open the WebSocket. - Offers an "onReceiveMessage" event, which we can use to dispatch notifications and handle requests to play sounds and send desktop notifications. - Offers a "broadcast()" method, which we can use to send desktop notification and sound requests. Test Plan: Added some code like this: ``` if (!statics.leader) { statics.leader = true; JX.Leader.listen('onBecomeLeader', function() { JX.log("This tab is now the leader."); }); JX.Leader.listen('onReceiveBroadcast', function(message, is_leader) { JX.log('[' + (is_leader ? 'As Leader' : 'Not Leader') + '] ' + message); }); JX.Leader.start(); } ``` Then: - Saw first tab open become leader reliably in Safari, Chrome, Firefox. - Saw new tab become leader reliably when the first tab was closed. - Saw broadcast() work as documented and deliver messages with correct leadership-flag and uniqueness. Reviewers: joshuaspence, btrahan Reviewed By: btrahan Subscribers: epriestley Maniphest Tasks: T6559 Differential Revision: https://secure.phabricator.com/D11235 |
||
---|---|---|
.. | ||
__tests__ | ||
control | ||
behavior.js | ||
Cookie.js | ||
DOM.js | ||
History.js | ||
JSON.js | ||
Leader.js | ||
Mask.js | ||
Request.js | ||
Resource.js | ||
Routable.js | ||
Router.js | ||
URI.js | ||
Vector.js | ||
WebSocket.js | ||
Workflow.js |