Update README and add TODO

This commit is contained in:
Tony Garnock-Jones 2016-11-22 15:43:55 +13:00
parent 2a9273142a
commit e1c7ecd9a7
2 changed files with 64 additions and 3 deletions

View File

@ -33,15 +33,17 @@ checkout.
("upstream") hub
- Support for polling and push-notification for remote topics, with
configurable poll interval
configurable poll interval; this allows *hub chaining*.
- Uses HTTP `Link` headers when retrieving a topic to determine
canonical hub and topic URLs; does not extract `link` elements from
any kind of XML or HTML document, nor does it implement
`.host-meta` discovery
- Support for `hub.secret` and `hub.lease_seconds` protocol
parameters
- [WebSocket](https://tools.ietf.org/html/rfc6455)-based
subscriptions to WebSub topics, in addition to the usual
[WebHook](https://en.wikipedia.org/wiki/Webhook)-based
subscriptions.
## Configuration
@ -207,6 +209,39 @@ At the time of writing, no official list of conformance criteria
exists; however, there is a draft list of Candidate Recommendation
implementation criteria at <https://github.com/w3c/pubsub/issues/56>.
## Codebase Layout
Files at the toplevel of the git checkout:
- `COPYING`, `gpl.txt`, `lgpl.txt`: Licensing and copyright information
- `info.rkt`: Racket package control metadata
- `nginx.conf`: Example nginx configuration file, for running RacketMQ behind nginx
In the `racketmq/` directory are the sources for the RacketMQ server:
- `hub.rkt`: **Main entry point for RacketMQ server**
- `config.rkt`: Actor that tracks changes in config files
- `protocol.rkt`: Definitions of protocol structures for coordination among RacketMQ actors
- `hub/`: Source code for the main functions of the RacketMQ server
- `hub/static-content.rkt`: Actor serving static content from `htdocs/`
- `hub/subscription.rkt`: Actors implementing downstream WebHook-based subscriptions
- `hub/websocket.rkt`: Actors implementing downstream WebSocket-based subscriptions
- `hub/topic-demand.rkt`: Actor that analyzes a subscription topic
URL, deciding whether it represents a local topic or a remote
topic.
- `hub/local-topic.rkt`: Actor implementing a local RacketMQ topic
- `hub/remote-topic.rkt`: Actors implementing a remote RacketMQ
topic and WebSub subscribers that relay content from upstream
hubs (if any) to downstream subscribers
The `racketmq/` directory also contains a few other files of interest:
- `defaults.rktd`: Fully-commented RacketMQ configuration file
- `poke.rkt`: Simple interactive tool for interacting with RacketMQ
- `run`: [Daemontools](https://cr.yp.to/daemontools.html) startup script for the server
- `log/run`: Daemontools logging startup script for the server
- `htdocs/`: Static files to be served by the server
## Bug Reports
Please report issues using this project's Github issues page,

26
TODO.md Normal file
View File

@ -0,0 +1,26 @@
✓ HEAD for racketmq topic links
✓ Proper async verification
✓ Split implementation into multiple modules
✓ Remove "unbounded" lease duration
✓ Configurability
✓ Explain codebase layout in README
CORS (ugh ugh ugh)
Secrets
Allow secret of a subscription to be changed
Durable subscriptions and other kinds of hub state
Make second-and-subsequent subscriptions to remote topics behave the same as first subscriptions:
- randomize the first poll of the content
- never do a poll if the poll interval is "none" for the topic as a whole
Local topic history retention and browsing