Having done quite a few websites over the years (since they came into existence, really), from static pages for most of the early 90's to implementing dynamic database driven websites with various xBase-type languages, then .NET, and within the past several years with PHP as our clients' needs have changed, I'm currently using B4J server websockets to build web-based access to the backend of an existing large project. I am by no means a "web developer" or web designer, we have employees that fit that bill very well, but helping them integrate into the backend and communications is what I'm best at.
So, with this one B4J project of mine, I'm using them to do the design and client-side scripting while using my B4J code and database backend to provide another access method to the data. Mainly, at this point, it's dynamic reporting but eventually it'll incorporate everything that the B4J, B4A, B4I clients to this B4J server app do. It IS nice to have one code-base in the B4J server app to serve all of those clients. It has saved a ton of time not having to write overlapping code for common routines (get this, save that, create report x, etc.) Just recently created a common, dynamic reporting system for this that's the same as the one I use for the B4J/B4A/B4I clients. To support new or revised reports, all I have to do is make the a couple of changes to the database and all of the clients (including the web-based one) adjust to that and handles the parameters, etc. I had this done with the non-web-based clients about a year ago, but just added it to the web-based client and that's pretty great.
I have another B4J project in the planning stages that'll be completely web-based so I'm hoping this current project will help work out the kinks and help me develop the tools to make that go smoother.