36 lines
880 B
TypeScript
36 lines
880 B
TypeScript
import { EventEmitter } from 'events'
|
|
|
|
export abstract class Transport extends EventEmitter {
|
|
protected _id: string
|
|
|
|
server: any
|
|
readyState: 'opening' | 'open' | 'closing' | 'closed'
|
|
remoteAddress: string
|
|
upgraded: boolean
|
|
request: any
|
|
|
|
constructor(server: any) {
|
|
super()
|
|
this.server = server
|
|
this.readyState = 'open'
|
|
this.upgraded = true
|
|
}
|
|
get id() {
|
|
return this._id
|
|
}
|
|
send(text: string) {
|
|
if (this.readyState == 'open') {
|
|
this.doSend(text)
|
|
} else {
|
|
console.debug(`send message ${text} to close client ${this._id}`)
|
|
}
|
|
}
|
|
close() {
|
|
if ("closed" === this.readyState || "closing" === this.readyState) { return }
|
|
this.doClose()
|
|
this.readyState = 'closed'
|
|
}
|
|
abstract doSend(text: string)
|
|
abstract doClose()
|
|
}
|