This repository is private.
All pages are served over SSL and all pushing and pulling is done over SSH.
No one may fork, clone, or view it unless they are added as a member.
Every repository with this icon (
) is private.
Every repository with this icon (
This repository is public.
Anyone may fork, clone, or view it.
Every repository with this icon (
) is public.
Every repository with this icon (
jssocket /
| name | age | message | |
|---|---|---|---|
| |
README | Wed Aug 20 11:06:49 -0700 2008 | [tmm1] |
| |
examples/ | Mon Aug 18 18:45:01 -0700 2008 | [tmm1] |
| |
flash/ | Mon Aug 18 17:24:11 -0700 2008 | [tmm1] |
| |
js/ | Mon Aug 18 18:44:54 -0700 2008 | [tmm1] |
README
jsSocket: generic javascript socket API (c) 2008 Aman Gupta (tmm1) http://github.com/tmm1/jsSocket WHAT IS IT jsSocket uses Flash's XMLSocket to expose a simple socket API to javascript REQUIREMENTS jquery, jquery.media, jsonStringify and jsSocket.swf FEATURES * multiple sockets on the same page * keepalive to keep connections open * automatic reconnect * status callback for custom connecting/disconnected/reconnecting UI * customizable logger for debugging WHY FLASH * high market penetration (according to a meebo study, more people had flash installed than javascript enabled) * single TCP connection (instead of one ajax connection per outgoing packet) * lower bandwidth usage and latency than long-polling CAVEATS * extra initial TCP connection required for security policy * packets must be delimited by null bytes * html and binary content must be base64 encoded USAGE - Specify the path to jsSocket.swf jsSocket.swf = '/flash/jsSocket.swf' - Connect to site.com on port 1234 var socket = jsSocket() socket.connect('site.com', 1234) socket.send('hello world') - Connect to document.location.hostname on port 443 var socket = jsSocket({ port: 443 }) - Install socket with default port and connect manually after setting data callback var socket = jsSocket({ port: 443, autoconnect: false }) socket.onData = function(data){ alert(data) } socket.connect() - Hook into connected/disconnected/data events var socket = jsSocket({ onOpen: function() { alert('connected') }, onData: function(data){ alert('got data: ' + data) }, onClose: function() { alert('disconnected') } }) - Disable keepalive pings and auto-reconnect var socket = jsSocket({ keepalive: false, autoreconnect: false }) socket.connect('site.com', 1234) - Send custom keepalive packets every minute var socket = jsSocket() socket.keepalive = function(){ socket.send('ping') } - Track the status of a socket connection var socket = jsSocket({ port: 443 }) socket.onStatus = function(type, val){ switch(type){ case 'connecting': // connecting to the server break case 'connected': // connected break case 'disconnected': // disconnected break case 'waiting': // waiting to reconnect in val seconds break case 'failed': // attempted max reconnects break } } - Debug jsSocket var socket = jsSocket({ debug: true }) socket.logger = console.log // log to firebug socket.logger = function(arg){ // log to a div if(!$('#logger')) $('<div/>').attr('id', 'logger').appendTo('body') $('#logger').append( $('<p/>').text(arg.toString()) ) } OTHER RESOURCES Alex MacCaw's Juggernaut: http://juggernaut.rubyforge.org jssockets (uses Flex/Flash9's RemotingSocket): http://code.google.com/p/jssockets




