fix: websocket close logic
This commit is contained in:
parent
a0866c1085
commit
bdad4136ec
@ -30,7 +30,7 @@
|
||||
"@ccms/common": "^0.28.0-beta.2",
|
||||
"@ccms/container": "^0.28.0-beta.2",
|
||||
"@ccms/i18n": "^0.28.0-beta.2",
|
||||
"@ccms/verify": "^0.25.1",
|
||||
"@ccms/verify": "^0.26.1",
|
||||
"crypto-js": "^4.1.1",
|
||||
"js-yaml": "^4.1.0"
|
||||
}
|
||||
|
@ -89,11 +89,11 @@ export class WebSocket extends EventEmitter {
|
||||
public onclose: (event: CloseEvent) => void
|
||||
public onerror: (event: ErrorEvent) => void
|
||||
|
||||
public on(eventName: string | symbol, listener: (...args: any[]) => void): this {
|
||||
public on(eventName: EventType, listener: (...args: any[]) => void): this {
|
||||
this.client.on(eventName, listener)
|
||||
return this
|
||||
}
|
||||
public emit(eventName: string | symbol, ...args: any[]): boolean {
|
||||
public emit(eventName: EventType, ...args: any[]): boolean {
|
||||
return this.client.emit(eventName, ...args)
|
||||
}
|
||||
|
||||
|
@ -136,7 +136,7 @@ export class NettyWebSocket extends Transport {
|
||||
console.debug(`Netty Client doClose code: ${code} reason: ${reason}`)
|
||||
if (this.readyState == WebSocket.CLOSING) {
|
||||
if (!this._closeFrameSent) {
|
||||
console.debug(`Netty Client doClose send close frame`)
|
||||
console.debug(`Netty Client doClose send close frame code: ${code} reason: ${reason}`)
|
||||
this.channel?.writeAndFlush(new CloseWebSocketFrame(code, reason))
|
||||
this._closeFrameSent = true
|
||||
}
|
||||
|
@ -56,11 +56,8 @@ export abstract class Transport extends EventEmitter {
|
||||
this.abortHandshake(new Error(msg));
|
||||
return;
|
||||
}
|
||||
if (this.readyState === WebSocket.CLOSING) {
|
||||
if (this._closeFrameSent && this._closeFrameReceived) {
|
||||
this.onclose({ code, reason });
|
||||
}
|
||||
return;
|
||||
if (code != 1000 && (code < 3000 || code > 4999)) {
|
||||
throw new Error(`The code must be either 1000, or between 3000 and 4999. ${code} is neither.`)
|
||||
}
|
||||
this.readyState = WebSocket.CLOSING
|
||||
try {
|
||||
@ -104,8 +101,11 @@ export abstract class Transport extends EventEmitter {
|
||||
|
||||
receiverClose(code: number, reason: string) {
|
||||
console.debug(`Netty Handler receeve close code: ${code} reason: ${reason}`)
|
||||
// if not set code then set code to 1000
|
||||
if (code === -1) { code = this._closeFrameSent ? 1005 : 1001 }
|
||||
this.readyState = WebSocket.CLOSING
|
||||
this._closeFrameReceived = true;
|
||||
this.close(code, reason)
|
||||
this.doClose(code, reason)
|
||||
}
|
||||
|
||||
abstract getId(): string
|
||||
|
Loading…
Reference in New Issue
Block a user