(data: ArrayBuffer | string)
| 91 | } |
| 92 | |
| 93 | private async onData(data: ArrayBuffer | string): Promise<void> { |
| 94 | const receiveData = this.receiveData |
| 95 | if (receiveData.offset === receiveData.count) { |
| 96 | const dat = JSON.parse(data as string) |
| 97 | this.receiveData = { |
| 98 | startTime: Date.now(), |
| 99 | offset: 0, |
| 100 | count: dat.count, |
| 101 | type: dat.type, |
| 102 | chunks: [] |
| 103 | } |
| 104 | } else { |
| 105 | receiveData.chunks.push(data) |
| 106 | receiveData.offset++ |
| 107 | if (receiveData.offset === receiveData.count) { |
| 108 | const endTime = Date.now() |
| 109 | const b = new Blob(receiveData.chunks) |
| 110 | const result = receiveData.type === 'string' ? await b.text() : await b.arrayBuffer() |
| 111 | await this.onReceive(result, { |
| 112 | size: b.size, |
| 113 | duration: endTime - receiveData.startTime |
| 114 | }) |
| 115 | receiveData.chunks = [] |
| 116 | } |
| 117 | } |
| 118 | } |
| 119 | |
| 120 | /** |
| 121 | * 发送数据,注意只能串行调用 |
nothing calls this directly
no outgoing calls
no test coverage detected