Collection of MD5 and SHA1 hashing and encoding methods.
- crypt.js, line 3
The WebSocket protocol is a bit of a mess. Various, incompatible, protocol drafts were implemented in browsers. Fortunately, recently a finished protocol was released in RFC6455. Further description assumes RFC6455 WebSocket protocol version. WebSocket browser support. Current (April 2012) browser status: - Chrome 16+ - works properly and supports RFC6455 - Firefox 11+ - works properly and support RFC6455, but has problems with proxies (see bugs 713026 and 713023) - Opera 11.62 - supports only very old draft and is disabled by default, in short: does not work - Internet Explorer 10+ - RFC6455 is supported since PP5 Due to the above status, this code currently only works on Chrome 16+ and Firefox 11+, but due to proxy problems on Firefox it is recommended to use it only on Chrome. Please also note that some users are only able to connect to ports 80 and 443. Port 80 is sometimes intercepted by transparent HTTP proxies, which mostly does not support WebSocket, so port 443 is the best choice currently (it does not have to be encrypted). WebSocket also usually does not work well with reverse proxies, be sure to make extensive tests if you use one. There is no standard for XMPP over WebSocket. However, there is an expired draft (http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00) and this implementation follows it. Tested servers: - node-xmpp-bosh (https://github.com/dhruvbird/node-xmpp-bosh) - supports RFC6455 and works with no problems since 0.6.1, it also transparently uses STARTTLS if necessary - wxg (https://github.com/Gordin/wxg) - supports RFC6455 and works with no problems, but cannot connect to servers requiring STARTTLS (original wxg at https://github.com/hocken/wxg has some issues, that were fixed by Gordin). - ejabberd-websockets (https://github.com/superfeedr/ejabberd-websockets) - does not support RFC6455 hence it does not work, adapting it to support RFC6455 should be quite easy for anyone knowing Erlang (some work in progress can be found on github) - Openfire (http://www.igniterealtime.org/projects/openfire/) - unofficial plugin is available, but it lacks support for RFC6455 hence it does not work - Apache Vysper (http://mina.apache.org/vysper/) - does not support RFC6455 hence does not work - Tigase (http://www.tigase.org/) - no known work on WebSocket support