Commit graph

157 commits

Author SHA1 Message Date
Gered 89ad55b9c8 minor cleanups 2016-05-11 15:45:58 -04:00
Gered 548ff7825d add some initial session tests 2016-05-11 15:36:29 -04:00
Gered 3bdf0868cf renaming some arguments for clarity 2016-05-11 13:45:25 -04:00
Gered 8aa0368494 add some more arraybuffer unit tests 2016-05-11 12:06:51 -04:00
Gered 19cfc50762 begin adding some unit tests 2016-05-11 10:58:52 -04:00
Gered d4c5784b4a switch to cheshire for json encoding
cheshire is significantly faster then data.json. i'm assuming the only
reason data.json was being used was due to the age of this project
2016-05-11 09:27:22 -04:00
Gered 37db9ce909 add response-timeout option to immutant adapter (same as jetty adapter) 2016-05-09 20:06:12 -04:00
Gered 579945fbda update jetty adapter to just use the jetty instance pulled in by ring
this also happens to be jetty 9, which is good as 7 and 8 are EOL
2016-05-09 19:09:07 -04:00
Gered 73bd151893 add logback.xml config to stop jetty from spamming log output 2016-05-09 18:01:38 -04:00
Gered 4fbf7b7c7d some more doc comments and minor formatting 2016-05-09 17:49:42 -04:00
Gered 333e4873d5 adding doc comments and changing some internal use functions to private 2016-05-09 16:29:24 -04:00
Gered 1eda612d0c don't trigger on-sent event if the delivered array is empty 2016-05-09 13:22:35 -04:00
Gered 36665bc123 fix decode-queued-map 2016-05-09 13:19:53 -04:00
Gered 6916f3efb2 send-map shouldn't really be returning the actual session agent 2016-05-09 13:17:13 -04:00
Gered 6674d171c3 update client & server send fn's to allow sending even non-map data
i personally think this was an important change as the default encoding
of maps to be sent as json is somewhat lossy (keywords converted to
strings, would never be able to get this 100% perfect using json alone
without a more complex encoding solution). encoding to edn is the
perfect solution to this.

since browserchannel pretty much requires the final sent data to be
json encoded, we just serialize the clojure data being sent to an
edn string within a root json object.

this does ultimately mean we have to do a little bit of pre-parsing
of sent and received maps to encode/decode properly and make it
completely transparent to application code, but i think it's an
acceptable tradeoff.
2016-05-09 12:45:17 -04:00
Gered b86d048e64 fix get-status (apparently didn't test it well enough) 2016-05-08 22:41:25 -04:00
Gered 9cc8bf5234 formatting 2016-05-08 20:30:25 -04:00
Gered d0cd1d0bca doc-comments 2016-05-08 20:28:47 -04:00
Gered 3aed2c3b1b mark a bunch of internal functions/defs as private where appropriate
the real purpose of doing this is of course to make it more obvious
to anyone reading this code what is the actual intended public API
and what isn't
2016-05-08 19:30:36 -04:00
Gered 9d314c4d88 super nitpicky code formatting
i apologize to anyone looking at this commit and wondering why i would
do this, but all these little "off" formatting things have been bugging
me all day while looking at this code. i simply had to do something.
2016-05-08 19:20:28 -04:00
Gered 4e63631854 update disconnection reason strings to be a bit more descriptive 2016-05-08 19:03:31 -04:00
Gered 337b1faf27 update chat-demo 2016-05-08 19:01:24 -04:00
Gered 49409cac62 add server-side helper functions 2016-05-08 19:01:08 -04:00
Gered 0fb68755fe rename 2016-05-08 19:00:45 -04:00
Gered da2b5d94b2 update how browserchannel server-side application event handling works
up until now, a single event handler "on-session" could be provided to
wrap-browserchannel which would be invoked each time a new client
session was created. it was then the application's responsibility to
register listeners for close/receive events inside this on-session event
handler.

this was kind of clunky honestly. basically every application would want
to use all of these events, so why not reduce the boilerplate needed?

this change makes it so a map of event handlers (:on-open, :on-close and
:on-receive) can be passed under wrap-browserchannel's options map (in
the key :events). this makes it simpler for an application to set up
browserchannel event handlers, and it works in basically the exact same
way as the clientside event handler registration works right now
2016-05-08 18:44:54 -04:00
Gered ecb66421b0 rename clj-browserchannel-server as it now also includes cljs stuff 2016-05-08 18:00:42 -04:00
Gered a58f6934c7 update chat-demo to use an anti-forgery token to demo how to set it up 2016-05-08 17:59:31 -04:00
Gered c18f295018 simplify stuff a bit 2016-05-08 15:51:51 -04:00
Gered a4b2e14897 add clojurescript client-side browserchannel api 2016-05-08 14:34:22 -04:00
Gered 161e7c3999 remove unneeded requires 2016-05-08 12:42:41 -04:00
Gered 7ada1c27c7 make immutant a provided dependency for the async adapter library 2016-05-08 12:05:28 -04:00
Gered b61be5ae21 some namespace renaming to keep things consistent (nitpicky...) 2016-05-08 11:56:33 -04:00
Gered 613c75953b update some project names and links to refer to this forked repo
project name updates are most important as i'll be deploying to clojars
and don't want any conflicts with the existing project
2016-05-07 17:24:35 -04:00
Gered 8e503e44e1 add immutant adapter project README.md 2016-05-07 17:12:08 -04:00
Gered 3a196a3ff2 add extra example code to show how to enable debug logging client-side 2016-05-07 17:10:08 -04:00
Gered 72c886e772 add immutant adapter support to the chat-demo 2016-05-07 16:58:36 -04:00
Gered 1ade049b2b add clj-browserchannel-immutant-adapter 2016-05-07 16:52:22 -04:00
Gered 02b2f551e1 forgot to bump up dependency version 2016-05-07 16:45:06 -04:00
Gered 722776ed2e bump versions 2016-05-07 16:39:54 -04:00
Gered 87f8b8a766 update chat-demo README.md 2016-05-07 16:36:17 -04:00
Gered 47790b3f92 update gitignore, add lein aliases to chat-demo 2016-05-07 16:36:03 -04:00
Gered 1fbf989bea shouldn't have been committed 2016-05-07 16:34:36 -04:00
Gered 0e76a0347c fix chat-demo
- dependencies updated
- removed old netty adapter code
- generally converted it into something more resembling a modern clojure
  web app
2016-05-07 16:20:54 -04:00
Gered 03c4abba20 remove clj-browserchannel-netty-adapter
it was horribly out of date, didn't even build (broken dependencies),
and when i briefly looked into fixing it up, i quickly realized that
aleph/netty has changed quite a bit in the few years since this adapter
was last touched. i really don't know anything about aleph/netty as
i've never used it so i don't think it's a good idea for me to be trying
to update this.

ultimately i think removing this is the best option for now rather then
keeping it around in a severly out of date and broken state.
2016-05-07 16:19:02 -04:00
Gered 7f67fbc352 update dependencies 2016-05-07 16:16:08 -04:00
Gered ff75105be0 cleanup .gitignores 2016-05-07 14:02:21 -04:00
Alexander K. Hudek 68d2ebc633 Improve memory efficiency by writing more frequently to back-channel. 2015-08-13 02:26:31 -04:00
Alexander Hudek 68440ee178 Ensure order of messages is preserved. 2015-08-10 19:37:25 -04:00
Dave Della Costa 34a961658b Merge pull request #7 from gered/master
pass incoming browserchannel message request maps to listeners
2015-01-21 12:48:05 +09:00
Gered ce554b8f63 pass incoming browserchannel message request maps to listeners 2014-12-19 16:58:39 -05:00