Support for older versions of IE

#1

Hi all,
I recently found Autobahn, and after playing with the tutorials I have to say I like it very much. I have a question, though.

In the “Get started with AutobahnPython” page here ( http://autobahn.ws/python/getstarted ), it says:

     "Use a current version of Chrome, Firefox or IE10. Support for other

browsers is there, but things need to be prepared for that".

So, um, what things need to be prepared to support older versions of IE? I am thinking of proposing the use of Autobahn in my workplace, but support for IE8 and 9, and preferably 7 is a must.

Regards,
Max

0 Likes

#2

Hi all,
I recently found Autobahn, and after playing with the tutorials I have
to say I like it very much. I have a question, though.

Thanks for compliments!

In the "Get started with AutobahnPython" page here (
http://autobahn.ws/python/getstarted ), it says:

"Use a current version of Chrome, Firefox or IE10. Support for other
browsers is there, but things need to be prepared for that".

So, um, what things need to be prepared to support older versions of IE?
I am thinking of proposing the use of Autobahn in my workplace, but
support for IE8 and 9, and preferably 7 is a must.

There are 2 options:

- IE8/9 with Flash Player 10+ and https://github.com/gimite/web-socket-js
- IE7+ with Google Chrome Frame

The former also requires outbound access to port 843.

You can try some demos here: https://webmq.tavendo.de/

What exactly are you trying to do with WS? Probably I can give you some more hints ..

Tobias

···

Am 16.04.2013 15:33, schrieb Max S:

Regards,
Max

--
You received this message because you are subscribed to the Google
Groups "Autobahn" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to autobahnws+...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

0 Likes

#3

The short version is that I am trying to do Reverse Ajax, or Comet if you prefer. A slightly longer version is that I am working on a system where certain data is generated by some users and then propagated to a large group of them - think of them like messages generated by publishers and sent to subscribers.

The PubSub model is exactly what models this best. But because of various historical reasons I cannot change in any way whatsoever, I’m stuck with IE 8 - maybe. If I am lucky. It could be IE7.

Max

···

On Tuesday, April 16, 2013 2:57:34 PM UTC+1, Tobias Oberstein wrote:

What exactly are you trying to do with WS? Probably I can give you some
more hints …

0 Likes

#4

    What exactly are you trying to do with WS? Probably I can give you some
    more hints ..

The short version is that I am trying to do Reverse Ajax, or Comet if
you prefer. A slightly longer version is that I am working on a system
where certain data is generated by some users and then propagated to a
large group of them - think of them like messages generated by
publishers and sent to subscribers.

Ah, yes. This is a typical use case for which WAMP was created: http://www.wamp.ws/faq#why_rpc_and_pubsub

So I guess you wanna use AutobahnPython in conjunction with AutobahnJS?

Do you want to implement you backend logic in Python on top of AutobahnPython? If so, you are fine with above already.

If you want to implement your backend logic directly within Oracle (PL/SQL), SAP HANA (SQLScript) or PostgreSQL (PL/pgSQL or PL/V8 => JavaScript), that's where we have created Tavendo WebMQ for.

Also: we will Open-Source the PostgreSQL-variant of WebMQ in the near future!

The PubSub model is *exactly* what models this best. But because of
various historical reasons I cannot change in any way whatsoever, I'm
stuck with IE 8 - maybe. If I am lucky. It could be IE7.

I'd investigate Google Chrome Frame for IE first .. this can be run without admin rights installation:

http://www.chromium.org/developers/how-tos/chrome-frame-getting-started/chrome-frame-faq#TOC-Do-I-need-to-be-an-Administrator-to-install-Google-Chrome-Frame-

···

Am 16.04.2013 16:07, schrieb Max S:

On Tuesday, April 16, 2013 2:57:34 PM UTC+1, Tobias Oberstein wrote:

Max

--
You received this message because you are subscribed to the Google
Groups "Autobahn" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to autobahnws+...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

0 Likes

#5

So I guess you wanna use AutobahnPython in conjunction with AutobahnJS?

Yes, it’s going to be Python. I have much of the rest of the server side
running under CherryPy. Being able to use Autobahn Python on the server
is one of the biggest attractions for me when considering which library
to use client side.

Do you want to implement you backend logic in Python on top of
AutobahnPython? If so, you are fine with above already.

So I should download and use web-socket-js - great. But I’m not clear about what to do afterwards. Does Autobahn need to be configured to make use of it? Or maybe there is a different syntax, or configuration parameter, or anything else, to use? Is there an example somewhere? Searches don’t turn up anything obvious, but maybe I’m missing some obvious links.

Or is it detected and used automatically?

Thanks for the help!

Max

···

On Tuesday, April 16, 2013 3:24:43 PM UTC+1, Tobias Oberstein wrote:

0 Likes

#6

Just for the record, CherryPy supports websocket through ws4py as well. With that said, it’s not nearly as rich in features as AutobahnPython (no WAMP for instance, just bare websocket and only RFC6455 at that). But I thought it was worth noting :slight_smile:

https://github.com/Lawouach/WebSocket-for-Python

···

On Tue, Apr 16, 2013 at 4:34 PM, Max S basi...@gmail.com wrote:

On Tuesday, April 16, 2013 3:24:43 PM UTC+1, Tobias Oberstein wrote:

So I guess you wanna use AutobahnPython in conjunction with AutobahnJS?

Yes, it’s going to be Python. I have much of the rest of the server side
running under CherryPy. Being able to use Autobahn Python on the server
is one of the biggest attractions for me when considering which library
to use client side.

http://twitter.com/lawouach

0 Likes

#7

    So I guess you wanna use AutobahnPython in conjunction with AutobahnJS?

Yes, it's going to be Python. I have much of the rest of the server side
running under CherryPy. Being able to use Autobahn Python on the server

So you are running CherryPy on top of Twisted/WSGI plus Autobahn .. something like

https://github.com/tavendo/AutobahnPython/tree/master/examples/websocket/echo_wsgi

?

is one of the biggest attractions for me when considering which library
to use client side.

    Do you want to implement you backend logic in Python on top of
    AutobahnPython? If so, you are fine with above already.

So I should download and use web-socket-js - great. But I'm not clear
about what to do afterwards. Does Autobahn need to be configured to make
use of it? Or maybe there is a different syntax, or configuration
parameter, or anything else, to use? Is there an example somewhere?
Searches don't turn up anything obvious, but maybe I'm missing some
obvious links.

For Chrome Frame, you are done by adding the following to your HTML

       <!-- Include Google Chrome Frame via Conditional Comment:
http://msdn.microsoft.com/en-us/library/ms537512(v=vs.85).aspx -->
       <!--[if lte IE 9]>
          <meta http-equiv="X-UA-Compatible" content="chrome=1" />
       <![endif]-->

For Flash bridge, you can do

       <!-- Include Flash WebSocket via Conditional Comment:
http://msdn.microsoft.com/en-us/library/ms537512(v=vs.85).aspx -->
       <!--[if lte IE 9]>
          <script type="text/javascript">
            WEB_SOCKET_SWF_LOCATION = "../../flashws/WebSocketMain.swf";
          </script>
          <script type="text/javascript" src="../../flashws/swfobject.js"></script>
          <script type="text/javascript" src="../../flashws/web_socket.js"></script>
       <![endif]-->

but you will need a server on 843 serving a "Flash policy file". It's trivial .. I'll add an example to AutobahnPython in the evening ..

···

Am 16.04.2013 16:34, schrieb Max S:

On Tuesday, April 16, 2013 3:24:43 PM UTC+1, Tobias Oberstein wrote:

Or is it detected and used automatically?

Thanks for the help!

Max

--
You received this message because you are subscribed to the Google
Groups "Autobahn" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to autobahnws+...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

0 Likes

#8

So you are running CherryPy on top of Twisted/WSGI plus Autobahn …
something like

https://github.com/tavendo/AutobahnPython/tree/master/examples/websocket/echo_wsgi

?

Pretty much, yes - with more complex logic behind the scenes, of course, but the basics are there and in the PubSub example.

but you will need a server on 843 serving a “Flash policy file”. It’s
trivial … I’ll add an example to AutobahnPython in the evening …

Thanks! I think I understand much better now. And if you edit the documentation, may I suggest adding a footnote for the AutobahnJS pages? Something saying “And if you’re still stuck with those old versions of IE, just download web-socket-js or Chrome Frame, and add these bits to your code” - and then the snippet you posted here.

Once again, thanks for the help!

Regards,
Max

···

On Tuesday, April 16, 2013 4:07:54 PM UTC+1, Tobias Oberstein wrote:

0 Likes

#9

Just for the record, CherryPy supports websocket through ws4py as well.
With that said, it's not nearly as rich in features as AutobahnPython
(no WAMP for instance, just bare websocket and only RFC6455 at that).
But I thought it was worth noting :slight_smile:

Sure;)

And fair enough: ws4py supports different event loops (gevent, Tornado, Python stdlib) while Autobahn only supports Twisted.

I love the Python community: friendly coopetition;) And user choice of course ..

Tobias

0 Likes

#10

Just for the record, CherryPy supports websocket through ws4py as well.

With that said, it’s not nearly as rich in features as AutobahnPython

(no WAMP for instance, just bare websocket and only RFC6455 at that).

But I thought it was worth noting :slight_smile:

Sure;)

And fair enough: ws4py supports different event loops (gevent, Tornado, Python stdlib) while Autobahn only supports Twisted.

I’ve never really used twisted but I thought it supported event loop with its most recent releases? Maybe I’ve got it wrong…

I love the Python community: friendly coopetition;) And user choice of course …

Indeed :slight_smile:

···

On Tue, Apr 16, 2013 at 6:15 PM, Tobias Oberstein tobias.o...@gmail.com wrote:

0 Likes

#11

I've never really used twisted but I thought it supported event loop
with its most recent releases? Maybe I've got it wrong...

On a lower level, yes .. i.e. Twisted supports stuff like running over "reactors" based on OS dispatchers like select, epoll, kqueue or UI dispatchers like GTK ..

http://twistedmatrix.com/documents/13.0.0/core/howto/choosing-reactor.html

But it does not run e.g. on top of Tornado .. which itself runs over select/epoll/kqueue and such.

Tobias

0 Likes

#12

    but you will need a server on 843 serving a "Flash policy file". It's
    trivial .. I'll add an example to AutobahnPython in the evening ..

Thanks! I think I understand much better now. And if you edit the
documentation, may I suggest adding a footnote for the AutobahnJS pages?

Good idea. The Autobahn site needs more love/polish .. probably just Open-Source it to receive patches .. :wink:

Something saying "And if you're still stuck with those old versions of
IE, just download web-socket-js or Chrome Frame, and add these bits to
your code" - and then the snippet you posted here.

Here you go:

https://github.com/tavendo/AutobahnPython/tree/master/examples/websocket/echo_wsfallbacks

I have factored out / open-sourced the Flash policy file server stuff into AutobahnPython just now .. hence you need to use head/master version of Autobahn from GitHub to try out the example.

There are minimal comments/readme which should give barely enough info .. let me know if it works for you ..

Thanks for using / spreading Autobahn!

Tobias

0 Likes

#13

Good idea. The Autobahn site needs more love/polish … probably just
Open-Source it to receive patches … :wink:

Hmm… Are you thinking of making it a wiki? This way access could be given to those who volunteer for editing. I suppose some mechanism could be put in place to close unused accounts in order to avoid having too many inactive accounts.

Something saying "And if you’re still stuck with those old versions of

IE, just download web-socket-js or Chrome Frame, and add these bits to

your code" - and then the snippet you posted here.

Here you go:

https://github.com/tavendo/AutobahnPython/tree/master/examples/websocket/echo_wsfallbacks

I have factored out / open-sourced the Flash policy file server stuff
into AutobahnPython just now … hence you need to use head/master
version of Autobahn from GitHub to try out the example.

Excellent! It looks very clear. I’ll give it a shot. Thank you very much, this saves me the time I would have needed to learn enough to roll my own version.

Max

···

On Tuesday, April 16, 2013 10:06:29 PM UTC+1, Tobias Oberstein wrote:

0 Likes

#14

I just found out the existence of SocksJS - website here: https://github.com/sockjs/sockjs-client

They say they can provide websocket equivalents for older browsers; this requires a server side component, for which they have a few versions: for NodeJS, Erlang, Tornado and a few others, but most interestingly for Twisted.

I wonder if it is possible to run Autobahn on top of it? This would provide an alternative to the use of Flash-based web-socket-js for those, like me, stuck having to deploy to IE<10.

Max

0 Likes

#15

I just found out the existence of SocksJS - website here:
https://github.com/sockjs/sockjs-client

They say they can provide websocket equivalents for older browsers; this
requires a server side component, for which they have a few versions:
for NodeJS, Erlang, Tornado and a few others, but most interestingly for
Twisted.

I wonder if it is possible to run Autobahn on top of it? This would

Running WAMP over sockjs WS fallbacks would be doable, sure. However, me personally, I have zero motivation/time to do it. All those fallbacks are terrible hacks with their own probs ..

provide an alternative to the use of Flash-based web-socket-js for

Why do you need an alternative? You have Flash and Chrome Frame for IE.
You cannot use either of those?

those, like me, stuck having to deploy to IE<10.

Bully for upgrade. It's 2013 and MS doesn't own the Web any more. Or use Chrome Frame for IE (since Flash sucks also of course).

Tobias

···

Am 17.04.2013 14:25, schrieb Max S:

Max

--
You received this message because you are subscribed to the Google
Groups "Autobahn" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to autobahnws+...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

0 Likes

#16

Not quite, pls see: https://github.com/tavendo/AutobahnWebsite

Contributing to the Autobahn project Website works by forking the repo and sending pull requests .. easy.

Tobias

···

On Tuesday, April 16, 2013 10:06:29 PM UTC+1, Tobias Oberstein wrote:

    Good idea. The Autobahn site needs more love/polish .. probably just
    Open-Source it to receive patches .. :wink:

Hmm... Are you thinking of making it a wiki? This way access could be
given to those who volunteer for editing. I suppose some mechanism could
be put in place to close unused accounts in order to avoid having too
many inactive accounts.

0 Likes

#17

Whoops, my apologies! I hope I didn’t sound pushy, I was genuinely curious there.

If you’re curious, it’s all about the policies of my employer’s current client. They (the client) are a technologically conservative bunch, and they’re not an IT shop so they have no strong interest in upgrading (and they are dead wrong, but that’s another issue). My boss’s strategy at the moment is to ask for as little software installations as possible.

But at least now I can present them with choosing between installing Flash, which they even might already have, or Chrome Frame. This gives them a modicum of choice.

Max

···

On Wednesday, April 17, 2013 3:18:34 PM UTC+1, Tobias Oberstein wrote:

Why do you need an alternative? You have Flash and Chrome Frame for IE.

You cannot use either of those?

those, like me, stuck having to deploy to IE<10.

Bully for upgrade. It’s 2013 and MS doesn’t own the Web any more. Or use
Chrome Frame for IE (since Flash sucks also of course).

0 Likes

#18

If you're curious, it's all about the policies of my employer's current
client. They (the client) are a technologically conservative bunch, and
they're not an IT shop so they have no strong interest in upgrading (and
they are dead wrong, but that's another issue). My boss's strategy at
the moment is to ask for as little software installations as possible.

Ah, makes sense from a business perspective of course ..

But at least now I can present them with choosing between installing
Flash, which they even might already have, or Chrome Frame. This gives
them a modicum of choice.

Using Chrome Frame on IE would be preferrable. Flash is also fine, but keep in mind the initial policy file serving which happens over port 843. If both server and browser clients are on the same intranet, fine. If not, you need to check for intermediaries like firewalls and proxies in between: do they allow 843?

Speaking of intermediaries: secure WebSocket (WSS) will work virtually everywhere, even in the presence of intermediaries. On corporate nets, on mobile carrier nets etc. There is 1 exception: man-in-the-middle proxies which inject ad-hoc TLS certs into browsers so that they can sniff even TLS. Whether WSS works with those then again depends on the specific proxy.

Tobias

0 Likes

#19

This is all very important information, and it could be a life saver for me, potentially! Thanks again!

Max

···

On Wednesday, April 17, 2013 4:16:04 PM UTC+1, Tobias Oberstein wrote:

Using Chrome Frame on IE would be preferrable. Flash is also fine, but
keep in mind the initial policy file serving which happens over port
843. If both server and browser clients are on the same intranet, fine.
If not, you need to check for intermediaries like firewalls and proxies
in between: do they allow 843?

Speaking of intermediaries: secure WebSocket (WSS) will work virtually
everywhere, even in the presence of intermediaries. On corporate nets,
on mobile carrier nets etc. There is 1 exception: man-in-the-middle
proxies which inject ad-hoc TLS certs into browsers so that they can
sniff even TLS. Whether WSS works with those then again depends on the
specific proxy.

0 Likes

#20

Oracle and PL/SQL? That definitely is interesting. I had a good look through the Tavendo web site, and the available Github repositories, but couldn’t find much information.

Where could I find out more?

Max

···

On Tuesday, April 16, 2013 3:24:43 PM UTC+1, Tobias Oberstein wrote:

If you want to implement your backend logic directly within Oracle
(PL/SQL), SAP HANA (SQLScript) or PostgreSQL (PL/pgSQL or PL/V8 =>
JavaScript), that’s where we have created Tavendo WebMQ for.

0 Likes