mirror of
https://github.com/denoland/deno.git
synced 2025-03-03 09:31:22 -05:00
fix(websocket): allow any close code for server (#11614)
This commit is contained in:
parent
16ae4a0d57
commit
f546f51698
3 changed files with 15 additions and 9 deletions
|
@ -646,7 +646,7 @@ unitTest({ perms: { net: true } }, async function httpServerWebSocket() {
|
|||
socket.onerror = () => fail();
|
||||
socket.onmessage = (m) => {
|
||||
socket.send(m.data);
|
||||
socket.close();
|
||||
socket.close(1001);
|
||||
};
|
||||
await respondWith(response);
|
||||
break;
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
const { BadResource, Interrupted } = core;
|
||||
const { ReadableStream } = window.__bootstrap.streams;
|
||||
const abortSignal = window.__bootstrap.abortSignal;
|
||||
const { WebSocket, _rid, _readyState, _eventLoop, _protocol } =
|
||||
const { WebSocket, _rid, _readyState, _eventLoop, _protocol, _server } =
|
||||
window.__bootstrap.webSocket;
|
||||
const {
|
||||
ArrayPrototypeIncludes,
|
||||
|
@ -370,6 +370,7 @@
|
|||
|
||||
const socket = webidl.createBranded(WebSocket);
|
||||
setEventTargetData(socket);
|
||||
socket[_server] = true;
|
||||
response[_ws] = socket;
|
||||
|
||||
return { response, socket };
|
||||
|
|
|
@ -125,6 +125,7 @@
|
|||
const _binaryType = Symbol("[[binaryType]]");
|
||||
const _bufferedAmount = Symbol("[[bufferedAmount]]");
|
||||
const _eventLoop = Symbol("[[eventLoop]]");
|
||||
const _server = Symbol("[[server]]");
|
||||
class WebSocket extends EventTarget {
|
||||
[_rid];
|
||||
|
||||
|
@ -387,13 +388,16 @@
|
|||
});
|
||||
}
|
||||
|
||||
if (
|
||||
code !== undefined && !(code === 1000 || (3000 <= code && code < 5000))
|
||||
) {
|
||||
throw new DOMException(
|
||||
"The close code must be either 1000 or in the range of 3000 to 4999.",
|
||||
"InvalidAccessError",
|
||||
);
|
||||
if (!this[_server]) {
|
||||
if (
|
||||
code !== undefined &&
|
||||
!(code === 1000 || (3000 <= code && code < 5000))
|
||||
) {
|
||||
throw new DOMException(
|
||||
"The close code must be either 1000 or in the range of 3000 to 4999.",
|
||||
"InvalidAccessError",
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (reason !== undefined && core.encode(reason).byteLength > 123) {
|
||||
|
@ -525,5 +529,6 @@
|
|||
_readyState,
|
||||
_eventLoop,
|
||||
_protocol,
|
||||
_server,
|
||||
};
|
||||
})(this);
|
||||
|
|
Loading…
Add table
Reference in a new issue