1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-22 14:52:41 +01:00
No description
Find a file
epriestley e0087a9f7a Add JX.Leader: synchronization over localStorage
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
2015-01-06 17:50:40 -08:00
bin Add bin/worker flood, for flooding the task queue with work 2014-11-24 11:10:15 -08:00
conf Add bin/almanac register to associate a host with an Almanac device and trust it 2015-01-02 15:13:30 -08:00
externals Update Stripe PHP API 2014-07-13 09:19:07 -07:00
resources Add JX.Leader: synchronization over localStorage 2015-01-06 17:50:40 -08:00
scripts Repositories - Move scripts/repository/reparse.php to bin/repository reparse 2015-01-06 11:42:15 -08:00
src Conduit - document that ERR-CONDUIT-CORE is coming atchya 2015-01-06 14:41:28 -08:00
support Minor improvements to handling Aphlict status code 2015-01-03 09:11:08 +11:00
webroot Add JX.Leader: synchronization over localStorage 2015-01-06 17:50:40 -08:00
.arcconfig Update .arclint in Phabricator for phutil-library lint 2014-05-12 06:01:30 -07:00
.arclint Blacklist the use of eval() 2015-01-05 10:52:33 +11:00
.editorconfig Specify config for text editors 2012-11-03 22:34:44 -07:00
.gitignore Add bin/almanac register to associate a host with an Almanac device and trust it 2015-01-02 15:13:30 -08:00
LICENSE Delete license headers from files 2012-11-05 11:16:51 -08:00
NOTICE Update Phabricator NOTICE file to reflect modern legal circumstances 2014-06-25 13:42:13 -07:00
README Reformat README as Remarkup 2014-07-16 22:10:36 +10:00

Phabricator is an open source collection of web applications which help
software companies build better software.

Phabricator includes applications for:

  - reviewing and auditing source code;
  - hosting and browsing repositories;
  - assembling a party to venture forth;
  - tracking bugs;
  - hiding stuff from coworkers; and
  - also some other things.

You can learn more about the project (and find links to documentation and
resources) [[http://phabricator.org/ | here]].

Phabricator is developed and maintained by [[http://phacility.com/ |
Phacility]]. The first version of Phabricator was originally built at Facebook.

= LICENSE =
Phabricator is released under the Apache 2.0 license except as otherwise noted.