Skip to content

Commit

Permalink
added JavaScript 3.4 with FULL Multiplexing.
Browse files Browse the repository at this point in the history
  • Loading branch information
stephenlb committed Dec 4, 2012
1 parent 096d489 commit e30344f
Show file tree
Hide file tree
Showing 18 changed files with 1,947 additions and 1 deletion.
2 changes: 1 addition & 1 deletion app-showcase/directors-console/director.js
@@ -1,7 +1,7 @@
(function(){ (function(){


var p = PUBNUB.init({ publish_key: 'demo', subscribe_key : 'demo' }) var p = PUBNUB.init({ publish_key: 'demo', subscribe_key : 'demo' })
, channel = 'my_channel'; , channel = 'my_directors_channel';


p.bind( 'mousedown,touchstart', p.$('buttons'), function(e) { p.bind( 'mousedown,touchstart', p.$('buttons'), function(e) {
var target = e.target || e.srcElement; var target = e.target || e.srcElement;
Expand Down
153 changes: 153 additions & 0 deletions javascript/3.4/README.md
@@ -0,0 +1,153 @@
# YOU MUST HAVE A PUBNUB ACCOUNT TO USE THE API.
http://www.pubnub.com/account

## TESTLING - (OPTIONAL)
PubNub JavaScript API for Web Browsers
uses Testling Cloud Service for QA and Deployment.
http://www.testling.com/

You need this to run './test.sh' unit test.
This is completely optional, however we love Testling.


## PubNub 3.3.1 Real-time Cloud Push API - JAVASCRIPT
http://www.pubnub.com - PubNub Real-time Push Service in the Cloud.
http://www.pubnub.com/tutorial/javascript-push-api

PubNub is a blazingly fast cloud-hosted messaging service for building
real-time web and mobile apps. Hundreds of apps and thousands of developers
rely on PubNub for delivering human-perceptive real-time
experiences that scale to millions of users worldwide. PubNub delivers
the infrastructure needed to build amazing MMO games, social apps,
business collaborative solutions, and more.

## SIMPLE EXAMPLE
```html
<div id=pubnub pub-key=demo sub-key=demo></div>
<script src=http://cdn.pubnub.com/pubnub-3.3.1.min.js ></script>
<script>
// LISTEN
PUBNUB.subscribe({
channel : "hello_world",
callback : alert
})
// SEND
PUBNUB.publish({
channel : "hello_world",
message : "Hi."
})
</script>
```

## ADVANCED STYLE
```html
<div id=pubnub pub-key=demo sub-key=demo></div>
<script src=http://pubnub.s3.amazonaws.com/pubnub-3.3.1.min.js ></script>
<script>(function(){
// LISTEN FOR MESSAGES
PUBNUB.subscribe({
channel : "hello_world", // CONNECT TO THIS CHANNEL.
restore : false, // STAY CONNECTED, EVEN WHEN BROWSER IS CLOSED
// OR WHEN PAGE CHANGES.
callback : function(message) { // RECEIVED A MESSAGE.
alert(message)
},
connect : function() { // CONNECTION ESTABLISHED.
PUBNUB.publish({ // SEND A MESSAGE.
channel : "hello_world",
message : "Hi from PubNub."
})
},
disconnect : function() { // LOST CONNECTION.
alert(
"Connection Lost." +
"Will auto-reconnect when Online."
)
},
reconnect : function() { // CONNECTION RESTORED.
alert("And we're Back!")
},
presence : function(message) { // Presence() example (see console for logged output.)
console.log(message, true);
}
})
})();
</script>

<span onclick="hereNow()">Click Me for Here Now!</span> // here_now() example (see console for logged output.)
<br/>
<span onclick="history()">Click Me for History!</span> // detailedHistory() example (see console for logged output.)

<script type="text/javascript">
function hereNow() {
PUBNUB.here_now({channel:'hello_world', callback:function (message) {
console.log(message);
}});
}
function history() {
PUBNUB.detailedHistory({count:10, channel:'hello_world', callback:function (message) {
console.log(message);
}});
}
</script>

```

## SSL MODE

```html
<div id=pubnub ssl=on></div>
<script src=https://pubnub.a.ssl.fastly.net/pubnub-3.3.1.min.js></script>
<script>(function(){
var pubnub = PUBNUB.init({
publish_key : 'demo',
subscribe_key : 'demo',
origin : 'pubsub.pubnub.com',
ssl : true
});
pubnub.subscribe({
channel : 'my_channel',
connect : function() { /* ... */ },
callback : function(message) {
alert(JSON.stringify(message));
}
});
})();</script>
```

## Using the PUBNUB init() Function

Sometimes you want to use create a PubNub Instance directly in JavaScript
and pass the PubNub API Keys without using a DOM element.
To do this, simply follow this `init` example:

```html
<script src=http://cdn.pubnub.com/pubnub-3.3.1.min.js ></script>
<script>(function(){
// INIT PubNub
var pubnub = PUBNUB.init({
publish_key : 'demo',
subscribe_key : 'demo',
origin : 'pubsub.pubnub.com'
});
// LISTEN
pubnub.subscribe({ channel : "hello_world", callback : alert })
// SEND
pubnub.publish({ channel : "hello_world", message : "Hi." })
})();</script>
```
Binary file added javascript/3.4/comet.swf
Binary file not shown.
4 changes: 4 additions & 0 deletions javascript/3.4/crossdomain.xml
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<cross-domain-policy>
<allow-access-from domain="*" secure="false" />
</cross-domain-policy>
Empty file added javascript/3.4/crypto.js
Empty file.
155 changes: 155 additions & 0 deletions javascript/3.4/json.js
@@ -0,0 +1,155 @@
/* =-====================================================================-= */
/* =-====================================================================-= */
/* =-========================= JSON =============================-= */
/* =-====================================================================-= */
/* =-====================================================================-= */

(window['JSON'] && window['JSON']['stringify']) || (function () {
window['JSON'] || (window['JSON'] = {});

if (typeof String.prototype.toJSON !== 'function') {
String.prototype.toJSON =
Number.prototype.toJSON =
Boolean.prototype.toJSON = function (key) {
return this.valueOf();
};
}

var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
gap,
indent,
meta = { // table of character substitutions
'\b': '\\b',
'\t': '\\t',
'\n': '\\n',
'\f': '\\f',
'\r': '\\r',
'"' : '\\"',
'\\': '\\\\'
},
rep;

function quote(string) {
escapable.lastIndex = 0;
return escapable.test(string) ?
'"' + string.replace(escapable, function (a) {
var c = meta[a];
return typeof c === 'string' ? c :
'\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
}) + '"' :
'"' + string + '"';
}


function str(key, holder) {
var i, // The loop counter.
k, // The member key.
v, // The member value.
length,
mind = gap,
partial,
value = holder[key];

if (value && typeof value === 'object' &&
typeof value.toJSON === 'function') {
value = value.toJSON(key);
}

if (typeof rep === 'function') {
value = rep.call(holder, key, value);
}

switch (typeof value) {
case 'string':
return quote(value);

case 'number':
return isFinite(value) ? String(value) : 'null';

case 'boolean':
case 'null':
return String(value);

case 'object':

if (!value) {
return 'null';
}

gap += indent;
partial = [];

if (Object.prototype.toString.apply(value) === '[object Array]') {

length = value.length;
for (i = 0; i < length; i += 1) {
partial[i] = str(i, value) || 'null';
}

v = partial.length === 0 ? '[]' :
gap ? '[\n' + gap +
partial.join(',\n' + gap) + '\n' +
mind + ']' :
'[' + partial.join(',') + ']';
gap = mind;
return v;
}
if (rep && typeof rep === 'object') {
length = rep.length;
for (i = 0; i < length; i += 1) {
k = rep[i];
if (typeof k === 'string') {
v = str(k, value);
if (v) {
partial.push(quote(k) + (gap ? ': ' : ':') + v);
}
}
}
} else {
for (k in value) {
if (Object.hasOwnProperty.call(value, k)) {
v = str(k, value);
if (v) {
partial.push(quote(k) + (gap ? ': ' : ':') + v);
}
}
}
}

v = partial.length === 0 ? '{}' :
gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
mind + '}' : '{' + partial.join(',') + '}';
gap = mind;
return v;
}
}

if (typeof JSON['stringify'] !== 'function') {
JSON['stringify'] = function (value, replacer, space) {
var i;
gap = '';
indent = '';

if (typeof space === 'number') {
for (i = 0; i < space; i += 1) {
indent += ' ';
}
} else if (typeof space === 'string') {
indent = space;
}
rep = replacer;
if (replacer && typeof replacer !== 'function' &&
(typeof replacer !== 'object' ||
typeof replacer.length !== 'number')) {
throw new Error('JSON.stringify');
}
return str('', {'': value});
};
}

if (typeof JSON['parse'] !== 'function') {
// JSON is parsed on the server for security.
JSON['parse'] = function (text) {return eval('('+text+')')};
}
}());

0 comments on commit e30344f

Please sign in to comment.