Question

We have a requirement from a customer to provide a "lite" version for dial-up and all the bells-and-whistles for a broadband user.

The solution will use Flex / Flash / Java EJB and some jsp.

Is there a way for the web server to distinguish between the two?

Was it helpful?

Solution

You don't care about the user's connection type, you care about the download speed.

Have a tiny flash app that downloads the rest the of the flash, and times how long it takes. Or an HTML page that times how long an Ajax download takes.

If the download of the rich-featured app takes too long, have the initially downloaded stub page/flash redirect to the slow download page (or download the bare-bones flash app, or whatever).

OTHER TIPS

The simplest and most reliable mechanism is probably to get the user to select their connection type from a drop down. Simple, I know, but it may save you a world of grief!

There's no way to distinguish between a broadband or dial-up as a connection type, but you can make an educated guess by connection speed.

Gmail does this and provides a link to a basic HTML version of their service if they detect it.

Gmail Load basic html image
(source: nirmaltv.com)

My guess is that there is some client side javascript polling done on AJAX requests. If the turnaround time surpasses a threshold, the option to switch to "lite" appears.

The best part about this option is that you allow the user to choose if they want to use the lite version instead of forcing them.

Here's a short code snippet from a code who attempted something similar. It's in C#, but it's pretty short and it's just the concept that's of interest.

Determine the Connection Speed of your client

Of course, they could be a temporary speed problem that has nothing to do with the user's connection at the time you test, etc, etc.

I had a similar problem a couple of years ago and just let the user choose between the hi and lo bandwidth sites. The very first thing I loaded on the page was this option, so they could move on quickly.

I think the typical approach to this is just to ask the user. If you don't feel confidant that your users will provide an accurate answer, I suspect you'll have to write an application that runs a speed test on the client. Typically these record how long it takes the client to receive x number of bytes, and use that to determine bandwidth.

Actionscript 3 has a library to help you with this task, but I believe it requires you to deploy your flex/flash app on Flash Media Server. See ActionScript 3.0 native bandwidth detection for details.

@Apphacker (I'd comment instead of answering if I had enough reputation...):

Can't guarantee the reverse, either--I have Earthlink dial-up, soon to upgrade to Earthlink DSL (it's what's available here...).

You could check their IP and see if it resolves to/is assigned to a dial up provider, such as AOL, Earthlink, NetZero. Wouldn't guarantee that those that don't resolve to such a provider are broadband users.

you could ...

  • ask the user
  • perform a speed test and ask the user if the result you found is correct
  • perform a speed test and hope that the result found is correct

I think a speed test should be enough.

If you only have a small well known user group it is sometimes possible to determine the connection speed by the ip. (Some providers assign different subnets to dial-up/broadband connections)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top