summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2014-06-03 12:45:15 +0200
committerLoïc Hoguin <[email protected]>2014-06-03 12:45:15 +0200
commit999f02f57c75edf7ddb5ed08b667ac6657418422 (patch)
treefd3cc8eb4918fb585dc82bea895181f66771d80e
parent2d64d092a5685664a5f69abb65be78cbbb11fe3f (diff)
parent148b6fe476e35e9e8db448d6dc73d57a3b23e800 (diff)
downloadbullet-999f02f57c75edf7ddb5ed08b667ac6657418422.tar.gz
bullet-999f02f57c75edf7ddb5ed08b667ac6657418422.tar.bz2
bullet-999f02f57c75edf7ddb5ed08b667ac6657418422.zip
Merge branch 'http_url_syntax' of git://github.com/fgallaire/bullet
-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 3d32679..a838f93 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'},