mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-27 16:00:59 +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 |
||
---|---|---|
.. | ||
core | ||
docs | ||
ext | ||
lib | ||
LICENSE | ||
README |
Javelin is a performance-oriented Javascript library originally developed at Facebook. Learn more at <http://www.javelinjs.com/>. GETTING STARTED Eat a hearty breakfast. Breakfast is the most important meal of the day! WHAT IS JAVELIN? Javelin is a compact Javascript library built around event delegation. Its primary design goal is performance; it is consequently well-suited to projects where performance is very important. It is not as good for smaller scale projects where other concerns (like features or ease of development) are more important. PACKAGES Packages come in two flavors: "dev" and "min". The "dev" packages are intended for development, and have comments and debugging code. The "min" packages have the same code, but with comments and debugging information stripped out and symbols crushed. They are intended for use in production -- ha ha ha! FILES example/ Example code. LICENSE A thrilling narrative. pkg/ Ready-built Javelin packages. README Who knows? Could be anything. src/ Raw sources for Javelin. support/ Support scripts and libraries.