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