155 lines
4.8 KiB
TypeScript
155 lines
4.8 KiB
TypeScript
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;
|
|
} |