summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorent Gallaire <[email protected]>2013-11-11 02:16:50 +0100
committerFlorent Gallaire <[email protected]>2014-02-20 00:05:29 +0100
commit148b6fe476e35e9e8db448d6dc73d57a3b23e800 (patch)
treeaf917b87e683ce638dc02bd50ac8bab38d9b4bc7
parent5bf494144cf4f86e85cd80bfd8c7aa495a4e2209 (diff)
downloadbullet-148b6fe476e35e9e8db448d6dc73d57a3b23e800.tar.gz
bullet-148b6fe476e35e9e8db448d6dc73d57a3b23e800.tar.bz2
bullet-148b6fe476e35e9e8db448d6dc73d57a3b23e800.zip
DRY url.replace().
Automatically disable WebSocket when the URL begins with 'http'. Update the README with the new 'http' url syntax. Update the clock example with the new 'http' url syntax.
-rw-r--r--README.md5
-rw-r--r--examples/clock/src/toppage_handler.erl17
-rw-r--r--priv/bullet.js19
3 files changed, 28 insertions, 13 deletions
diff --git a/README.md b/README.md
index 8822c68..e8ab736 100644
--- a/README.md
+++ b/README.md
@@ -114,9 +114,12 @@ $(document).ready(function(){
});
```
-Always use the WebSocket (ws:) form for your bullet URLs and Bullet
+Use the WebSocket (ws:) form for your bullet URLs and Bullet
will change the URL as needed for non-WebSocket transports.
+Use the standard (http:) form for your bullet URLs and Bullet
+will only try non-WebSocket transports.
+
The `$.bullet` function takes an optional second 'options' object.
The following properties are supported:
diff --git a/examples/clock/src/toppage_handler.erl b/examples/clock/src/toppage_handler.erl
index 71512d3..be52be2 100644
--- a/examples/clock/src/toppage_handler.erl
+++ b/examples/clock/src/toppage_handler.erl
@@ -24,6 +24,10 @@ handle(Req, State) ->
Current time (best source): <span id=\"time_best\">unknown</span>
<span></span><span id=\"status_best\">unknown</span>
<button id=\"send_best\">Send Time</button></p>
+ <p><input type=\"checkbox\" checked=\"yes\" id=\"enable_best_nows\"></input>
+ Current time (best source non-websocket): <span id=\"time_best_nows\">unknown</span>
+ <span></span><span id=\"status_best_nows\">unknown</span>
+ <button id=\"send_best_nows\">Send Time</button></p>
<p><input type=\"checkbox\" checked=\"yes\" id=\"enable_websocket\"></input>
Current time (websocket only): <span id=\"time_websocket\">unknown</span>
<span></span><span id=\"status_websocket\">unknown</span>
@@ -44,10 +48,10 @@ handle(Req, State) ->
<script type=\"text/javascript\">
// <![CDATA[
$(document).ready(function(){
- var start = function(name, options) {
+ var start = function(name, url, options) {
var bullet;
var open = function(){
- bullet = $.bullet('ws://localhost:8080/bullet', options);
+ bullet = $.bullet(url, options);
bullet.onopen = function(){
$('#status_' + name).text('online');
};
@@ -81,12 +85,13 @@ $(document).ready(function(){
});
};
- start('best', {});
- start('websocket', {'disableEventSource': true,
+ start('best', 'ws://localhost:8080/bullet', {});
+ start('best_nows', 'http://localhost:8080/bullet', {});
+ start('websocket', 'ws://localhost:8080/bullet', {'disableEventSource': true,
'disableXHRPolling': true});
- start('eventsource', {'disableWebSocket': true,
+ start('eventsource', 'ws://localhost:8080/bullet', {'disableWebSocket': true,
'disableXHRPolling': true});
- start('polling', {'disableWebSocket': true,
+ start('polling', 'ws://localhost:8080/bullet', {'disableWebSocket': true,
'disableEventSource': true});
});
// ]]>
diff --git a/priv/bullet.js b/priv/bullet.js
index 26a1fc5..162093b 100644
--- a/priv/bullet.js
+++ b/priv/bullet.js
@@ -37,6 +37,16 @@
var OPEN = 1;
var CLOSING = 2;
var CLOSED = 3;
+ var httpURL = url.replace('ws:', 'http:').replace('wss:', 'https:');
+
+ if (url == httpURL) {
+ if (options == undefined) {
+ var options = {'disableWebSocket': true};
+ }
+ else {
+ options.disableWebSocket = true;
+ }
+ }
var xhrSend = function(data){
/**
@@ -47,13 +57,12 @@
return false;
}
- var sendUrl = url.replace('ws:', 'http:').replace('wss:', 'https:');
var self = this;
$.ajax({
async: false,
cache: false,
type: 'POST',
- url: sendUrl,
+ url: httpURL,
data: data,
dataType: 'text',
contentType: 'application/x-www-form-urlencoded; charset=utf-8',
@@ -106,8 +115,7 @@
return false;
}
- var eventsourceURL = url.replace('ws:', 'http:').replace('wss:', 'https:');
- var source = new window.EventSource(eventsourceURL);
+ var source = new window.EventSource(httpURL);
source.onopen = function () {
fake.readyState = OPEN;
@@ -165,12 +173,11 @@
};
function poll(){
- var fakeurl = url.replace('ws:', 'http:').replace('wss:', 'https:');
xhr = $.ajax({
type: 'GET',
cache: false,
- url: fakeurl,
+ url: httpURL,
dataType: 'text',
data: {},
headers: {'X-Socket-Transport': 'xhrPolling'},