47 Commits

Author SHA1 Message Date
Ian Gulliver
30a3e89bfc Fix several cases of assuming that a Profile always has a numeric ID, rather than a named key, which is untrue. 2015-12-24 15:26:43 -08:00
Ian Gulliver
33f368910f Better method for tracking reconnect of polling clients. 2015-06-19 22:43:20 -07:00
Ian Gulliver
0ead64a41d Tell polling clients when we've recreated their connection and they need to resubscribe. 2015-06-15 21:25:00 -07:00
Ian Gulliver
1325ad570e Event cleanup pipeline. 2015-06-14 21:48:36 -07:00
Ian Gulliver
0df573171d Change lots of keys to IDs for length. 2015-06-14 19:56:13 -07:00
Ian Gulliver
cc6ad7803a Fix polling and acks. 2015-06-14 19:24:00 -07:00
Ian Gulliver
a63bd0abda Rename funciton, allow acking. 2015-06-14 15:26:02 -07:00
Ian Gulliver
de25447566 Add some additional 'ok' return codes. 2015-06-14 15:13:13 -07:00
Ian Gulliver
33579856c8 Untested code for polling instances. 2015-06-12 19:57:55 -07:00
Ian Gulliver
3995a4d0d9 Don't send pins until a subscription is established, since unpin events never come in that case. 2015-06-07 14:16:54 -07:00
Ian Gulliver
368c704b81 Translate events in pre-channel subscribe responses. 2014-06-19 23:36:47 -07:00
Ian Gulliver
3c452dabf3 Add message translation layer than can handle "me" as an ACL. 2014-06-19 23:14:26 -07:00
Ian Gulliver
c210d826b2 Send profile with every RPC response. 2014-06-17 21:14:59 -07:00
Ian Gulliver
40229ff0c0 Return the new message for sendMessage and pin RPCs. Pass it through the sendMessage Promise callback. 2014-06-12 23:12:00 -07:00
Ian Gulliver
66c1564980 Add server-side info logging. 2014-06-09 23:51:41 -07:00
Ian Gulliver
44ede2abbf Record IP addresses for messages and pins to support later banning. 2014-06-08 22:04:53 -07:00
Ian Gulliver
f4bb278835 Impose access controls for subscribe even without a channel open. 2014-06-02 21:53:51 -07:00
Ian Gulliver
5079aac9a6 Allow subscribe to return events from a subject even when not creating a subscription 2014-06-01 21:14:58 -07:00
Ian Gulliver
fd5569c5dc Generate the client_id on the client, so we don't need a round trip to get it before we can send arbitrary RPCs.
This changes the Profile/Client relationship; we never needed to be transactional with them, so split them up entirely so we can reparent Clients.
2014-05-31 23:25:15 -07:00
Ian Gulliver
a70982243b Add app-local caching and stop using memcache; reduce overall datastore access. 2014-05-28 14:44:13 -07:00
Ian Gulliver
ba51350768 Move exception logging to warn level, so real errors stick out. 2014-05-27 14:32:15 -07:00
Ian Gulliver
b700202e4f Quiet some of the logspam around instances 2014-05-26 17:28:59 -07:00
Ian Gulliver
898121dabd Remove the concept of keys; they can just be encoded into subject names. 2014-05-25 23:50:53 -07:00
Ian Gulliver
8e7af2f5cf Add support for ephemeral messages that are tied to an open channel, aka "pins". 2014-05-25 23:40:56 -07:00
Ian Gulliver
1e91f5babb Per-RPC retry support, used when subscribe() can't find an active instance. 2014-05-23 15:32:31 -07:00
Ian Gulliver
b5bce48df6 Make Instance actually stand alone. 2014-05-23 15:00:28 -07:00
Ian Gulliver
0b38d082c1 Remove Instance from the Profile hierarchy to allow key_name queries. 2014-05-23 14:29:11 -07:00
Ian Gulliver
1ec2340f48 Need to make the client_id even shorter. Switch to id() 2014-05-23 11:40:08 -07:00
Ian Gulliver
0e87448f6f Switch to using Instance key as the channel_id, since there seems to be an undocumented length limit. 2014-05-23 11:23:30 -07:00
Ian Gulliver
6bfa10e82a Add a third level construct under Profile and Client, Instance. This allows more than one connected object with the same client credentials. 2014-05-23 10:31:52 -07:00
Ian Gulliver
f27fc7977b Add real subject ACL support and tests. 2014-05-19 20:52:57 +03:00
Ian Gulliver
0380679ddb When rebuilding the channel, subscribe via last seen ID, so we don't miss messages from the time we were disconnected. 2014-05-18 11:20:44 +03:00
Ian Gulliver
1a66b86c13 Add test for duplicate message suppression. Fix totally broken subscribe by key code. 2014-05-17 18:04:57 +03:00
Ian Gulliver
0247b78c6b Suppress duplicate messages from a client (e.g. when network failure causes retries for RPCs that actually went through). 2014-05-16 23:07:38 +03:00
Ian Gulliver
64e16e7ec1 Add a way to fetch our current profile ID. 2014-05-16 19:03:33 +03:00
Ian Gulliver
1e755c9693 Move onReady callback to after channel response from server, so we have a client_id before we start sending other RPCs. 2014-05-14 23:28:56 +03:00
Ian Gulliver
1b38d81c9c Remove SetValue/GetValue. Add debug console support for keeping track of streaming key values. 2014-05-11 19:34:42 +03:00
Ian Gulliver
0575b8918d Add a key field to messages and allow lookup of most recent message by key. 2014-05-11 15:43:45 +03:00
Ian Gulliver
bff49f3401 Checkpoint: working subscribe/unsubscribe and message transit, through the debug page 2014-05-10 15:47:33 +02:00
Ian Gulliver
6a6fdc1c41 Make the structure that we pass over the channel or pseudo-channel called an "event".
Make the string that we pass through pubsub called a "message".
2014-05-09 15:00:48 -07:00
Ian Gulliver
e6885042f5 Add pubsub server API, without client API or UI yet. 2014-05-06 22:46:07 -07:00
Ian Gulliver
bb5c0752b1 Move message handling in RPC responses out of individual commands and to a general property of the response. 2014-05-06 13:47:57 -07:00
Ian Gulliver
cf05c0f620 Switch to a multi-request/response API to make batching possible. 2014-05-06 13:38:40 -07:00
Ian Gulliver
0369266d60 Remove the getUser API call and replace it with channel messages. Close channels when log in/out events occur for security. 2014-05-01 14:55:50 -07:00
Ian Gulliver
64f989e3ca Support public flag for StateEntry 2014-05-01 11:33:29 -07:00
Ian Gulliver
7069d16aaa Fix handling of initial messages on channel creation by returning them in the
RPC response instead of over the channel.
2014-03-25 14:19:13 -07:00
Ian Gulliver
c99c171dbc Initial snapshot. 2014-03-25 13:43:11 -07:00