mirror of
https://github.com/benjamin-wilson/public-pool.git
synced 2026-09-29 09:05:06 -07:00
handle partial socket data
This commit is contained in:
@@ -52,6 +52,7 @@ export class StratumV1Client {
|
|||||||
public noFee: boolean;
|
public noFee: boolean;
|
||||||
public hashRate: number;
|
public hashRate: number;
|
||||||
|
|
||||||
|
private buffer: string = '';
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
public readonly socket: Socket,
|
public readonly socket: Socket,
|
||||||
@@ -65,19 +66,22 @@ export class StratumV1Client {
|
|||||||
private readonly addressSettingsService: AddressSettingsService
|
private readonly addressSettingsService: AddressSettingsService
|
||||||
) {
|
) {
|
||||||
|
|
||||||
const rl = createInterface({
|
this.socket.on('data', (data: Buffer) => {
|
||||||
input: this.socket
|
this.buffer += data.toString();
|
||||||
})
|
let lines = this.buffer.split('\n');
|
||||||
|
this.buffer = lines.pop() || ''; // Save the last part of the data (incomplete line) to the buffer
|
||||||
|
|
||||||
rl.on("line", async (line) => {
|
lines
|
||||||
|
.filter(m => m.length > 0)
|
||||||
|
.forEach(async (m) => {
|
||||||
try {
|
try {
|
||||||
await this.handleMessage(line);
|
await this.handleMessage(m);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
await this.socket.end();
|
await this.socket.end();
|
||||||
console.error(e);
|
console.error(e);
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
rl.on('error', async (error: Error) => { });
|
});
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user