UNPKG

dragonbones-runtime

Version:

the tools to build dragonbones file for diffrent framework

115 lines (106 loc) 4.37 kB
////////////////////////////////////////////////////////////////////////////////////// // // Copyright (c) 2014-present, Egret Technology. // All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // * Neither the name of the Egret nor the // names of its contributors may be used to endorse or promote products // derived from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY EGRET AND CONTRIBUTORS "AS IS" AND ANY EXPRESS // OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL EGRET AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA, // OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // ////////////////////////////////////////////////////////////////////////////////////// namespace egret.web { /** * @private */ export class HTML5WebSocket implements ISocket { private socket; constructor() { if (!window["WebSocket"]) { egret.$error(3100); } } private onConnect:Function; private onClose:Function; private onSocketData:Function; private onError:Function; private thisObject:any; public addCallBacks(onConnect:Function, onClose:Function, onSocketData:Function, onError:Function, thisObject:any):void { this.onConnect = onConnect; this.onClose = onClose; this.onSocketData = onSocketData; this.onError = onError; this.thisObject = thisObject; } private host:string = ""; private port:number = 0; public connect(host:string, port:number):void { this.host = host; this.port = port; let socketServerUrl = "ws://" + this.host + ":" + this.port; this.socket = new window["WebSocket"](socketServerUrl); this.socket.binaryType = "arraybuffer"; this._bindEvent(); } public connectByUrl(url:string):void { this.socket = new window["WebSocket"](url); this.socket.binaryType = "arraybuffer"; this._bindEvent(); } private _bindEvent():void { let that = this; let socket = this.socket; socket.onopen = function () { if (that.onConnect) { that.onConnect.call(that.thisObject); } }; socket.onclose = function (e) { if (that.onClose) { that.onClose.call(that.thisObject); } }; socket.onerror = function (e) { if (that.onError) { that.onError.call(that.thisObject); } }; socket.onmessage = function (e) { if (that.onSocketData) { that.onSocketData.call(that.thisObject, e.data); } }; } public send(message:any):void { this.socket.send(message); } public close():void { this.socket.close(); } public disconnect():void { if (this.socket.disconnect) { this.socket.disconnect(); } } } if (egret.Capabilities.runtimeType == RuntimeType.WEB) { ISocket = HTML5WebSocket; } }