Fixed cordova js bridge implementation, fixed iOS open timeout
This commit is contained in:
		| @@ -158,5 +158,7 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| ## What's new | ||||
| 1.2.3 - fixed ios socket closing crashes | ||||
| 1.5.0 - added ios open and write timeouts, changed js errors format | ||||
| 1.2.3 - fixed iOS socket closing crashes | ||||
| 1.5.0 - added iOS and Android open and write timeouts, changed js errors format | ||||
| 1.5.1 - fixed cordova js bridge implementation | ||||
| 1.5.2 - fixed iOS open timeout | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "cordova-plugin-socket-tcp", | ||||
|   "version": "1.5.0", | ||||
|   "version": "1.5.2", | ||||
|   "description": "This Cordova plugin provides JavaScript API, that allows you to communicate with server through TCP protocol. Currently we support these platforms: iOS, Android, WP8.", | ||||
|   "cordova": { | ||||
|     "platforms": [ | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
|  | ||||
| <plugin xmlns="http://apache.org/cordova/ns/plugins/1.0" id="cordova-plugin-socket-tcp" version="1.5.0"> | ||||
| <plugin xmlns="http://apache.org/cordova/ns/plugins/1.0" id="cordova-plugin-socket-tcp" version="1.5.2"> | ||||
|     <name>SocketsForCordova</name> | ||||
|     <description> | ||||
| 		This Cordova plugin provides JavaScript API, that allows you to communicate with server through TCP protocol. | ||||
| @@ -49,7 +49,6 @@ | ||||
| 	    <!--<framework src="CoreGraphics.framework" />--> | ||||
|     </platform> | ||||
|  | ||||
|  | ||||
|     <!-- wp8 --> | ||||
|     <platform name="wp8"> | ||||
|         <config-file target="config.xml" parent="/*"> | ||||
| @@ -65,7 +64,4 @@ | ||||
| 		<source-file src="src/wp8/src/SocketEvent.cs" target-dir="src" /> | ||||
| 		<source-file src="src/wp8/src/SocketStorage.cs" target-dir="src" /> | ||||
|     </platform> | ||||
|  | ||||
|          | ||||
|  | ||||
| </plugin> | ||||
|   | ||||
							
								
								
									
										132
									
								
								socket.js
									
									
									
									
									
								
							
							
						
						
									
										132
									
								
								socket.js
									
									
									
									
									
								
							| @@ -1,5 +1,4 @@ | ||||
| cordova.define("cordova-plugin-socket-tcp.Socket", function(require, exports, module) { | ||||
|     /** | ||||
| /** | ||||
|  * Copyright (c) 2015, Blocshop s.r.o. | ||||
|  * All rights reserved. | ||||
|  * | ||||
| @@ -17,34 +16,36 @@ cordova.define("cordova-plugin-socket-tcp.Socket", function(require, exports, mo | ||||
|  */ | ||||
|  | ||||
|  | ||||
|     var exec = require('cordova/exec'); | ||||
| var exec = require('cordova/exec'); | ||||
|  | ||||
|     var SOCKET_EVENT = "SOCKET_EVENT"; | ||||
|     var CORDOVA_SERVICE_NAME = "SocketsForCordova"; | ||||
| var SOCKET_EVENT = "SOCKET_EVENT"; | ||||
| var CORDOVA_SERVICE_NAME = "SocketsForCordova"; | ||||
|  | ||||
|     Socket.State = {}; | ||||
|     Socket.State[Socket.State.CLOSED = 0] = "CLOSED"; | ||||
|     Socket.State[Socket.State.OPENING = 1] = "OPENING"; | ||||
|     Socket.State[Socket.State.OPENED = 2] = "OPENED"; | ||||
|     Socket.State[Socket.State.CLOSING = 3] = "CLOSING"; | ||||
| Socket.State = {}; | ||||
| Socket.State[Socket.State.CLOSED = 0] = "CLOSED"; | ||||
| Socket.State[Socket.State.OPENING = 1] = "OPENING"; | ||||
| Socket.State[Socket.State.OPENED = 2] = "OPENED"; | ||||
| Socket.State[Socket.State.CLOSING = 3] = "CLOSING"; | ||||
|  | ||||
|     Socket.ErrorType = {}; | ||||
|     Socket.ErrorType[Socket.ErrorType.GENERAL = 0] = "general"; | ||||
|     Socket.ErrorType[Socket.ErrorType.OPEN_TIMEOUT = 1] = "openTimeout"; | ||||
|     Socket.ErrorType[Socket.ErrorType.WRITE_TIMEOUT = 2] = "writeTimeout"; | ||||
| Socket.ErrorType = {}; | ||||
| Socket.ErrorType[Socket.ErrorType.GENERAL = 0] = "general"; | ||||
| Socket.ErrorType[Socket.ErrorType.OPEN_TIMEOUT = 1] = "openTimeout"; | ||||
| Socket.ErrorType[Socket.ErrorType.WRITE_TIMEOUT = 2] = "writeTimeout"; | ||||
|  | ||||
|     function Socket() { | ||||
| function Socket() { | ||||
|     this._state = Socket.State.CLOSED; | ||||
|     this.onData = null; | ||||
|     this.onClose = null; | ||||
|     this.onError = null; | ||||
|     this.socketKey = guid(); | ||||
|     } | ||||
| } | ||||
|  | ||||
|     Socket.prototype.open = function (host, port, success, error) { | ||||
| Socket.prototype.open = function (host, port, success, error) { | ||||
|  | ||||
|         success = success || function() { }; | ||||
|         error = error || function() { }; | ||||
|     success = success || function () { | ||||
|         }; | ||||
|     error = error || function () { | ||||
|         }; | ||||
|  | ||||
|     if (!this._ensureState(Socket.State.CLOSED, error)) { | ||||
|         return; | ||||
| @@ -86,19 +87,25 @@ cordova.define("cordova-plugin-socket-tcp.Socket", function(require, exports, mo | ||||
|             window.document.addEventListener(SOCKET_EVENT, socketEventHandler); | ||||
|             success(); | ||||
|         }, | ||||
|             function(errorMessage) { | ||||
|         function (errorMessage) { | ||||
|             _that._state = Socket.State.CLOSED; | ||||
|             error(errorMessage); | ||||
|         }, | ||||
|         CORDOVA_SERVICE_NAME, | ||||
|         "open", | ||||
|             [ this.socketKey, host, port ]); | ||||
|         [ | ||||
|             this.socketKey, | ||||
|             host, | ||||
|             port | ||||
|         ]); | ||||
| }; | ||||
|  | ||||
| Socket.prototype.write = function (data, success, error) { | ||||
|  | ||||
|     success = success || function () { | ||||
|         }; | ||||
|     error = error || function () { | ||||
|         }; | ||||
|  | ||||
|     Socket.prototype.write = function (data, success, error) { | ||||
|  | ||||
|         success = success || function() { }; | ||||
|         error = error || function() { }; | ||||
|  | ||||
|     if (!this._ensureState(Socket.State.OPENED, error)) { | ||||
|         return; | ||||
| @@ -113,13 +120,18 @@ cordova.define("cordova-plugin-socket-tcp.Socket", function(require, exports, mo | ||||
|         error, | ||||
|         CORDOVA_SERVICE_NAME, | ||||
|         "write", | ||||
|             [ this.socketKey, dataToWrite ]); | ||||
|         [ | ||||
|             this.socketKey, | ||||
|             dataToWrite | ||||
|         ]); | ||||
| }; | ||||
|  | ||||
| Socket.prototype.shutdownWrite = function (success, error) { | ||||
|  | ||||
|     success = success || function () { | ||||
|         }; | ||||
|     error = error || function () { | ||||
|         }; | ||||
|  | ||||
|     Socket.prototype.shutdownWrite = function (success, error) { | ||||
|  | ||||
|         success = success || function() { }; | ||||
|         error = error || function() { }; | ||||
|  | ||||
|     if (!this._ensureState(Socket.State.OPENED, error)) { | ||||
|         return; | ||||
| @@ -130,13 +142,15 @@ cordova.define("cordova-plugin-socket-tcp.Socket", function(require, exports, mo | ||||
|         error, | ||||
|         CORDOVA_SERVICE_NAME, | ||||
|         "shutdownWrite", | ||||
|             [ this.socketKey ]); | ||||
|         [this.socketKey]); | ||||
| }; | ||||
|  | ||||
| Socket.prototype.close = function (success, error) { | ||||
|  | ||||
|     success = success || function () { | ||||
|         }; | ||||
|     error = error || function () { | ||||
|         }; | ||||
|  | ||||
|     Socket.prototype.close = function (success, error) { | ||||
|  | ||||
|         success = success || function() { }; | ||||
|         error = error || function() { }; | ||||
|  | ||||
|     if (!this._ensureState(Socket.State.OPENED, error)) { | ||||
|         return; | ||||
| @@ -149,21 +163,21 @@ cordova.define("cordova-plugin-socket-tcp.Socket", function(require, exports, mo | ||||
|         error, | ||||
|         CORDOVA_SERVICE_NAME, | ||||
|         "close", | ||||
|             [ this.socketKey ]); | ||||
|     }; | ||||
|         [this.socketKey]); | ||||
| }; | ||||
|  | ||||
|     Object.defineProperty(Socket.prototype, "state", { | ||||
|         get: function () { | ||||
| Object.defineProperty(Socket.prototype, "state", { | ||||
|     get          : function () { | ||||
|         return this._state; | ||||
|     }, | ||||
|         enumerable: true, | ||||
|         configurable: true | ||||
|     }); | ||||
|     enumerable   : true, | ||||
|     configurable : true | ||||
| }); | ||||
|  | ||||
|     Socket.prototype._ensureState = function(requiredState, errorCallback) { | ||||
| Socket.prototype._ensureState = function (requiredState, errorCallback) { | ||||
|     var state = this._state; | ||||
|     if (state != requiredState) { | ||||
|             window.setTimeout(function() { | ||||
|         window.setTimeout(function () { | ||||
|             errorCallback("Invalid operation for this socket state: " + Socket.State[state]); | ||||
|         }); | ||||
|         return false; | ||||
| @@ -171,25 +185,25 @@ cordova.define("cordova-plugin-socket-tcp.Socket", function(require, exports, mo | ||||
|     else { | ||||
|         return true; | ||||
|     } | ||||
|     }; | ||||
| }; | ||||
|  | ||||
|     Socket.dispatchEvent = function (event) { | ||||
| Socket.dispatchEvent = function (event) { | ||||
|     var eventReceive = document.createEvent('Events'); | ||||
|     eventReceive.initEvent(SOCKET_EVENT, true, true); | ||||
|     eventReceive.payload = event; | ||||
|  | ||||
|     document.dispatchEvent(eventReceive); | ||||
|     }; | ||||
| }; | ||||
|  | ||||
|     Socket._copyToArray = function (array) { | ||||
| Socket._copyToArray = function (array) { | ||||
|     var outputArray = new Array(array.length); | ||||
|     for (var i = 0; i < array.length; i++) { | ||||
|         outputArray[i] = array[i]; | ||||
|     } | ||||
|     return outputArray; | ||||
|     }; | ||||
| }; | ||||
|  | ||||
|     var guid = (function () { | ||||
| var guid = (function () { | ||||
|     function s4() { | ||||
|         return Math.floor((1 + Math.random()) * 0x10000) | ||||
|             .toString(16) | ||||
| @@ -200,10 +214,10 @@ cordova.define("cordova-plugin-socket-tcp.Socket", function(require, exports, mo | ||||
|         return s4() + s4() + '-' + s4() + '-' + s4() + '-' + | ||||
|             s4() + '-' + s4() + s4() + s4(); | ||||
|     }; | ||||
|     })(); | ||||
| })(); | ||||
|  | ||||
| // Register event dispatcher for Windows Phone | ||||
|     if (navigator.userAgent.match(/iemobile/i)) { | ||||
| if (navigator.userAgent.match(/iemobile/i)) { | ||||
|     window.document.addEventListener("deviceready", function () { | ||||
|         exec( | ||||
|             Socket.dispatchEvent, | ||||
| @@ -212,10 +226,8 @@ cordova.define("cordova-plugin-socket-tcp.Socket", function(require, exports, mo | ||||
|             }, | ||||
|             CORDOVA_SERVICE_NAME, | ||||
|             "registerWPEventDispatcher", | ||||
|                 [ ]); | ||||
|             []); | ||||
|     }); | ||||
|     } | ||||
| } | ||||
|  | ||||
|     module.exports = Socket; | ||||
|  | ||||
| }); | ||||
| module.exports = Socket; | ||||
							
								
								
									
										
											BIN
										
									
								
								src/ios/.DS_Store
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/ios/.DS_Store
									
									
									
									
										vendored
									
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -77,7 +77,8 @@ int writeTimeoutSeconds = 5.0; | ||||
|  | ||||
| -(void)onOpenTimeout:(NSTimer *)timer { | ||||
|     NSLog(@"[NATIVE] Open timeout: %d", openTimeoutSeconds); | ||||
|     self.errorEventHandler(@"Socket open timeout", @"openTimeout"); | ||||
|     //self.errorEventHandler(@"Socket open timeout", @"openTimeout"); | ||||
|     self.openErrorEventHandler(@"Socket open timeout"); | ||||
|     openTimer = nil; | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user