mirror of
https://github.com/MercuryWorkshop/adrift.git
synced 2025-05-13 06:10:01 -04:00
websocket progress
This commit is contained in:
parent
cf5d378147
commit
e5d51e0868
4 changed files with 74 additions and 8 deletions
|
@ -29,7 +29,7 @@ function bareErrorToResponse(e: BareError): {
|
|||
|
||||
export class AdriftServer {
|
||||
send: (msg: ArrayBuffer) => void;
|
||||
sockets: Record<number, WebSocket>;
|
||||
sockets: Record<number, WebSocket> = {};
|
||||
events: EventEmitter;
|
||||
|
||||
constructor(send: (msg: ArrayBuffer) => void) {
|
||||
|
@ -240,6 +240,7 @@ export class AdriftServer {
|
|||
const payload = AdriftServer.tryParseJSONPayload(msg.slice(cursor));
|
||||
const ws = (this.sockets[seq] = new WebSocket(payload.url));
|
||||
ws.binaryType = "arraybuffer";
|
||||
// TODO v important: onerror
|
||||
ws.onopen = () => {
|
||||
this.sendWSOpen(seq);
|
||||
};
|
||||
|
@ -282,6 +283,27 @@ export class AdriftServer {
|
|||
break;
|
||||
}
|
||||
|
||||
case C2SRequestTypes.WSSendText: {
|
||||
const socket = this.sockets[seq];
|
||||
if (!socket) return;
|
||||
socket.send(new TextDecoder().decode(msg.slice(cursor)));
|
||||
break;
|
||||
}
|
||||
|
||||
case C2SRequestTypes.WSSendBinary: {
|
||||
const socket = this.sockets[seq];
|
||||
if (!socket) return;
|
||||
socket.send(msg.slice(cursor));
|
||||
break;
|
||||
}
|
||||
|
||||
case C2SRequestTypes.WSClose: {
|
||||
const socket = this.sockets[seq];
|
||||
if (!socket) return;
|
||||
socket.close();
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
// not implemented
|
||||
break;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue