open source
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
class CloseEvent extends Event {
|
||||
code: number;
|
||||
reason: string;
|
||||
wasClean: boolean;
|
||||
constructor() {
|
||||
super('close');
|
||||
}
|
||||
initCloseEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, wasCleanArg: boolean, codeArg: number, reasonArg: string): void {
|
||||
}
|
||||
}
|
||||
|
||||
interface ErrorEvent extends Event {
|
||||
colno: number;
|
||||
error: any;
|
||||
filename: string;
|
||||
lineno: number;
|
||||
message: string;
|
||||
initErrorEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, messageArg: string, filenameArg: string, linenoArg: number): void;
|
||||
}
|
||||
|
||||
interface MessagePort extends EventTarget {
|
||||
onmessage: (ev: MessageEvent) => any;
|
||||
close(): void;
|
||||
postMessage(message?: any, ports?: any): void;
|
||||
start(): void;
|
||||
addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
|
||||
}
|
||||
|
||||
interface MessageEventInit extends EventInit {
|
||||
data?: any;
|
||||
origin?: string;
|
||||
lastEventId?: string;
|
||||
channel?: string;
|
||||
source?: any;
|
||||
ports?: MessagePort[];
|
||||
}
|
||||
|
||||
class MessageEvent extends Event {
|
||||
data: any;
|
||||
origin: string;
|
||||
ports: any;
|
||||
source: Window;
|
||||
constructor(type: string, eventInitDict?: MessageEventInit) {
|
||||
super(type);
|
||||
}
|
||||
initMessageEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, dataArg: any, originArg: string, lastEventIdArg: string, sourceArg: Window): void {
|
||||
}
|
||||
}
|
||||
|
||||
//ES6 start
|
||||
interface WebSocket {
|
||||
/*
|
||||
addEventListener(type: "close", listener: (ev: CloseEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "open", listener: (ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
|
||||
*/
|
||||
}
|
||||
/**
|
||||
* 注意必须从 ConchWebSocket 继承,必须要用es6.否则无法new出带两个field的对象。
|
||||
*/
|
||||
/*
|
||||
class WebSocket extends ConchWebSocket implements _EventTarget {
|
||||
dispatchEvent: (evt: Event) => boolean;//接口
|
||||
removeEventListener: (type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean) => void;//接口
|
||||
|
||||
onmessage: (data: MessageEvent) => void;
|
||||
_onmessage: (data: ArrayBuffer | string) => void;
|
||||
constructor(url: string) {
|
||||
super(url);
|
||||
this._onmessage = (data: ArrayBuffer | string) => {
|
||||
var evt = new MessageEvent('message');
|
||||
evt.data = data;
|
||||
this.onmessage && this.onmessage(evt);
|
||||
};
|
||||
}
|
||||
static CLOSED = 3;
|
||||
static CLOSING = 2;
|
||||
static CONNECTING = 0;
|
||||
static OPEN = 1;
|
||||
}
|
||||
applyMixins(WebSocket, [EventTarget]);
|
||||
*/
|
||||
//ES6 end
|
||||
|
||||
|
||||
//ES5 start
|
||||
class WebSocket extends EventTarget {
|
||||
private _nativeObj:ConchWebSocket=null;
|
||||
|
||||
onmessage: (data: MessageEvent) => void;
|
||||
constructor(url: string) {
|
||||
super();
|
||||
this._nativeObj = new ConchWebSocket(url);
|
||||
|
||||
(<any>this._nativeObj)._onmessage = (data: ArrayBuffer | string) => {
|
||||
var evt = new MessageEvent('message');
|
||||
evt.data = data;
|
||||
evt.target=evt.currentTarget=this;
|
||||
this.onmessage && this.onmessage(evt);
|
||||
};
|
||||
}
|
||||
|
||||
get binaryType(){
|
||||
return this._nativeObj.binaryType;
|
||||
}
|
||||
set binaryType(b:string){
|
||||
this._nativeObj.binaryType=b;
|
||||
}
|
||||
get timegap(){
|
||||
return this._nativeObj.timegap;
|
||||
}
|
||||
set onopen(f:(e)=>void){
|
||||
this._nativeObj.onopen=function(){
|
||||
var e=new Event("open");
|
||||
e.target=e.currentTarget=this;
|
||||
f(e);
|
||||
};
|
||||
}
|
||||
set onclose(f:()=>void){
|
||||
this._nativeObj.onclose=f;
|
||||
}
|
||||
set onerror(f:()=>void){
|
||||
this._nativeObj.onerror=f;
|
||||
}
|
||||
close(){
|
||||
this._nativeObj.close();
|
||||
}
|
||||
send(msg:string|ArrayBuffer):void{
|
||||
this._nativeObj.send(msg);
|
||||
}
|
||||
|
||||
get readyState():number
|
||||
{
|
||||
return this._nativeObj.readyState;
|
||||
}
|
||||
|
||||
static CLOSED = 3;
|
||||
static CLOSING = 2;
|
||||
static CONNECTING = 0;
|
||||
static OPEN = 1;
|
||||
}
|
||||
//ES5 end
|
||||
|
||||
window.WebSocket = WebSocket;
|
||||
|
||||
interface Socket {
|
||||
addEventListener(type: "close", listener: (ev: CloseEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: "open", listener: (ev: Event) => any, useCapture?: boolean): void;
|
||||
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
|
||||
}
|
||||
Reference in New Issue
Block a user