mirror of
https://github.com/nestriness/nestri.git
synced 2025-12-13 01:05:37 +02:00
This adds: - [x] Keyboard and mouse handling on the frontend - [x] Video and audio streaming from the backend to the frontend - [x] Input server that works with Websockets Update - 17/11 - [ ] Master docker container to run this - [ ] Steam runtime - [ ] Entrypoint.sh --------- Co-authored-by: Kristian Ollikainen <14197772+DatCaptainHorse@users.noreply.github.com> Co-authored-by: Kristian Ollikainen <DatCaptainHorse@users.noreply.github.com>
46 lines
813 B
TypeScript
46 lines
813 B
TypeScript
import type { Reader, Writer } from "./stream"
|
|
|
|
export class FrameReader {
|
|
#stream: Reader
|
|
|
|
constructor(stream: Reader) {
|
|
this.#stream = stream
|
|
}
|
|
|
|
// Returns the next frame
|
|
async read(): Promise<Uint8Array | undefined> {
|
|
if (await this.#stream.done()) return
|
|
|
|
const size = await this.#stream.u53()
|
|
const payload = await this.#stream.read(size)
|
|
|
|
return payload
|
|
}
|
|
|
|
async stop(code: number) {
|
|
await this.#stream.stop(code)
|
|
}
|
|
}
|
|
|
|
export class FrameWriter {
|
|
#stream: Writer
|
|
|
|
constructor(stream: Writer) {
|
|
this.#stream = stream
|
|
}
|
|
|
|
// Writes the next frame
|
|
async write(payload: Uint8Array) {
|
|
await this.#stream.u53(payload.byteLength)
|
|
await this.#stream.write(payload)
|
|
}
|
|
|
|
async close() {
|
|
await this.#stream.close()
|
|
}
|
|
|
|
async reset(code: number) {
|
|
await this.#stream.reset(code)
|
|
}
|
|
}
|