Merge pull request #347 from dol/fix/better-ws-binarytype-detection
Improved websocket binary support detection
This commit is contained in:
commit
7cad15425e
|
@ -296,17 +296,13 @@ function connect() {
|
||||||
var uri;
|
var uri;
|
||||||
|
|
||||||
if (typeof UsingSocketIO !== "undefined") {
|
if (typeof UsingSocketIO !== "undefined") {
|
||||||
uri = "http://" + rfb_host + ":" + rfb_port + "/" + rfb_path;
|
uri = "http";
|
||||||
} else {
|
} else {
|
||||||
if (conf.encrypt) {
|
uri = conf.encrypt ? "wss" : "ws";
|
||||||
uri = "wss://";
|
|
||||||
} else {
|
|
||||||
uri = "ws://";
|
|
||||||
}
|
|
||||||
uri += rfb_host + ":" + rfb_port + "/" + rfb_path;
|
|
||||||
}
|
}
|
||||||
|
uri += "://" + rfb_host + ":" + rfb_port + "/" + rfb_path;
|
||||||
Util.Info("connecting to " + uri);
|
Util.Info("connecting to " + uri);
|
||||||
// TODO: make protocols a configurable
|
|
||||||
ws.open(uri, conf.wsProtocols);
|
ws.open(uri, conf.wsProtocols);
|
||||||
|
|
||||||
Util.Debug("<< RFB.connect");
|
Util.Debug("<< RFB.connect");
|
||||||
|
|
|
@ -262,7 +262,7 @@ function on(evt, handler) {
|
||||||
eventHandlers[evt] = handler;
|
eventHandlers[evt] = handler;
|
||||||
}
|
}
|
||||||
|
|
||||||
function init(protocols) {
|
function init(protocols, ws_schema) {
|
||||||
rQ = [];
|
rQ = [];
|
||||||
rQi = 0;
|
rQi = 0;
|
||||||
sQ = [];
|
sQ = [];
|
||||||
|
@ -278,11 +278,14 @@ function init(protocols) {
|
||||||
bt = true;
|
bt = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for full binary type support in WebSockets
|
// Check for full binary type support in WebSocket
|
||||||
// TODO: this sucks, the property should exist on the prototype
|
// Inspired by:
|
||||||
// but it does not.
|
// https://github.com/Modernizr/Modernizr/issues/370
|
||||||
|
// https://github.com/Modernizr/Modernizr/blob/master/feature-detects/websockets/binary.js
|
||||||
try {
|
try {
|
||||||
if (bt && ('binaryType' in (new WebSocket("wss://localhost:17523")))) {
|
if (bt &&
|
||||||
|
('binaryType' in WebSocket.prototype ||
|
||||||
|
!!(new WebSocket(ws_schema + '://.').binaryType))) {
|
||||||
Util.Info("Detected binaryType support in WebSockets");
|
Util.Info("Detected binaryType support in WebSockets");
|
||||||
wsbt = true;
|
wsbt = true;
|
||||||
}
|
}
|
||||||
|
@ -325,7 +328,8 @@ function init(protocols) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function open(uri, protocols) {
|
function open(uri, protocols) {
|
||||||
protocols = init(protocols);
|
var ws_schema = uri.match(/^([a-z]+):\/\//)[1];
|
||||||
|
protocols = init(protocols, ws_schema);
|
||||||
|
|
||||||
if (test_mode) {
|
if (test_mode) {
|
||||||
websocket = {};
|
websocket = {};
|
||||||
|
|
Loading…
Reference in New Issue