nativescript-websockets
Advanced tools
Comparing version
{ | ||
"name": "nativescript-websockets", | ||
"version": "1.5.0", | ||
"version": "1.5.1", | ||
"description": "A WebSocket NativeScript module for Android and iOS", | ||
@@ -5,0 +5,0 @@ "main": "websockets", |
@@ -8,3 +8,3 @@ /***************************************************************************************** | ||
* | ||
* Version 1.5.0 Nathan@master-technology.com | ||
* Version 1.5.1 Nathan@master-technology.com | ||
****************************************************************************************/ | ||
@@ -103,3 +103,5 @@ "use strict"; | ||
// Check for Native Java Objects | ||
if (typeof message === "object" && typeof message.getClass === 'function') { | ||
console.log("TO:", Object.prototype.toString.call(message), message); | ||
if (typeof message === "object" && typeof message.getClass === 'function') { | ||
this.onMessageBinary(message); | ||
@@ -115,2 +117,4 @@ return; | ||
onMessageBinary: function(binaryMessage) { | ||
console.log("TO2:", Object.prototype.toString.call(binaryMessage), binaryMessage); | ||
if (this.wrapper && binaryMessage) { | ||
@@ -467,9 +471,18 @@ | ||
if (this._queue.length && state === this.OPEN) { | ||
for (var i = 0; i < this._queue.length; i++) { | ||
this._send(this._queue[i]); | ||
var sendSuccess = true; | ||
while (this._queue.length && sendSuccess) { | ||
var oldMessage = this._queue.pop(); | ||
sendSuccess = this._send(oldMessage); | ||
} | ||
this._queue = []; | ||
if (this._queueRunner) { | ||
clearTimeout(this._queueRunner); | ||
this._queueRunner = null; | ||
if (sendSuccess) { | ||
if (this._queueRunner) { | ||
clearTimeout(this._queueRunner); | ||
this._queueRunner = null; | ||
} | ||
} else { | ||
if (message != null && !this._browser) { | ||
this._queue.push(message); | ||
this._startQueueRunner(); | ||
} | ||
return false; | ||
} | ||
@@ -494,4 +507,3 @@ } | ||
this._send(message); | ||
return true; | ||
return this._send(message); | ||
}; | ||
@@ -519,20 +531,30 @@ | ||
NativeWebSockets.prototype._send = function(message) { | ||
if (message instanceof ArrayBuffer || message instanceof Uint8Array || Array.isArray(message)) { | ||
var view; | ||
if (message instanceof ArrayBuffer) { | ||
view = new Uint8Array(message); | ||
} else { | ||
view = message; | ||
} | ||
//noinspection JSUnresolvedFunction,JSUnresolvedVariable | ||
var buffer = java.lang.reflect.Array.newInstance(java.lang.Byte.class.getField("TYPE").get(null), view.length); | ||
for (var i=0;i<view.length;i++) { | ||
//noinspection JSUnresolvedFunction,JSUnresolvedVariable | ||
java.lang.reflect.Array.setByte(buffer, i, byte(view[i])); | ||
} | ||
this._socket.send(buffer); | ||
} else { | ||
this._socket.send(message); | ||
} | ||
try { | ||
if (message instanceof ArrayBuffer || message instanceof Uint8Array || Array.isArray(message)) { | ||
var view; | ||
if (message instanceof ArrayBuffer) { | ||
view = new Uint8Array(message); | ||
} else { | ||
view = message; | ||
} | ||
//noinspection JSUnresolvedFunction,JSUnresolvedVariable | ||
var buffer = java.lang.reflect.Array.newInstance(java.lang.Byte.class.getField("TYPE").get(null), view.length); | ||
for (var i = 0; i < view.length; i++) { | ||
//noinspection JSUnresolvedFunction,JSUnresolvedVariable | ||
java.lang.reflect.Array.setByte(buffer, i, byte(view[i])); | ||
} | ||
this._socket.send(buffer); | ||
} else { | ||
this._socket.send(message); | ||
} | ||
} catch (err) { | ||
// Websocket is probably diconnected; so put the back at the top of the message queue... | ||
if (this._browser) { return false; } | ||
this._queue.unshift(message); | ||
this._startQueueRunner(); | ||
return false; | ||
} | ||
return true; | ||
}; | ||
@@ -539,0 +561,0 @@ |
61034
1.46%1274
1.51%