@hono/node-server 2.0.9 → 2.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +19 -3
- package/dist/index.mjs +19 -3
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1001,10 +1001,18 @@ const setupWebSocket = (options) => {
|
|
|
1001
1001
|
waiterMap.delete(request);
|
|
1002
1002
|
}
|
|
1003
1003
|
});
|
|
1004
|
+
const rejectWaiter = (request) => {
|
|
1005
|
+
const waiter = waiterMap.get(request);
|
|
1006
|
+
if (waiter) {
|
|
1007
|
+
waiterMap.delete(request);
|
|
1008
|
+
waiter.reject(/* @__PURE__ */ new Error("WebSocket handshake aborted"));
|
|
1009
|
+
}
|
|
1010
|
+
};
|
|
1004
1011
|
const waitForWebSocket = (request, connectionSymbol) => {
|
|
1005
|
-
return new Promise((resolve) => {
|
|
1012
|
+
return new Promise((resolve, reject) => {
|
|
1006
1013
|
waiterMap.set(request, {
|
|
1007
1014
|
resolve,
|
|
1015
|
+
reject,
|
|
1008
1016
|
connectionSymbol
|
|
1009
1017
|
});
|
|
1010
1018
|
});
|
|
@@ -1031,16 +1039,19 @@ const setupWebSocket = (options) => {
|
|
|
1031
1039
|
}
|
|
1032
1040
|
const waiter = waiterMap.get(request);
|
|
1033
1041
|
if (!waiter || waiter.connectionSymbol !== env[CONNECTION_SYMBOL_KEY]) {
|
|
1034
|
-
|
|
1042
|
+
rejectWaiter(request);
|
|
1035
1043
|
if (server.listenerCount("upgrade") === 1) rejectUpgradeRequest(socket, status, responseHeaders);
|
|
1036
1044
|
return;
|
|
1037
1045
|
}
|
|
1038
1046
|
const addResponseHeaders = (headers) => {
|
|
1039
1047
|
appendResponseHeaders(headers, responseHeaders);
|
|
1040
1048
|
};
|
|
1049
|
+
const reclaimWaiterOnClose = () => rejectWaiter(request);
|
|
1050
|
+
socket.once("close", reclaimWaiterOnClose);
|
|
1041
1051
|
wss.on("headers", addResponseHeaders);
|
|
1042
1052
|
try {
|
|
1043
1053
|
wss.handleUpgrade(request, socket, head, (ws) => {
|
|
1054
|
+
socket.off("close", reclaimWaiterOnClose);
|
|
1044
1055
|
wss.emit("connection", ws, request);
|
|
1045
1056
|
});
|
|
1046
1057
|
} finally {
|
|
@@ -1059,7 +1070,12 @@ const upgradeWebSocket = (0, hono_ws.defineWebSocketHelper)(async (c, events, op
|
|
|
1059
1070
|
const connectionSymbol = generateConnectionSymbol();
|
|
1060
1071
|
env[CONNECTION_SYMBOL_KEY] = connectionSymbol;
|
|
1061
1072
|
(async () => {
|
|
1062
|
-
|
|
1073
|
+
let ws;
|
|
1074
|
+
try {
|
|
1075
|
+
ws = await waitForWebSocket(env.incoming, connectionSymbol);
|
|
1076
|
+
} catch {
|
|
1077
|
+
return;
|
|
1078
|
+
}
|
|
1063
1079
|
const messagesReceivedInStarting = [];
|
|
1064
1080
|
const bufferMessage = (data, isBinary) => {
|
|
1065
1081
|
messagesReceivedInStarting.push([data, isBinary]);
|
package/dist/index.mjs
CHANGED
|
@@ -1000,10 +1000,18 @@ const setupWebSocket = (options) => {
|
|
|
1000
1000
|
waiterMap.delete(request);
|
|
1001
1001
|
}
|
|
1002
1002
|
});
|
|
1003
|
+
const rejectWaiter = (request) => {
|
|
1004
|
+
const waiter = waiterMap.get(request);
|
|
1005
|
+
if (waiter) {
|
|
1006
|
+
waiterMap.delete(request);
|
|
1007
|
+
waiter.reject(/* @__PURE__ */ new Error("WebSocket handshake aborted"));
|
|
1008
|
+
}
|
|
1009
|
+
};
|
|
1003
1010
|
const waitForWebSocket = (request, connectionSymbol) => {
|
|
1004
|
-
return new Promise((resolve) => {
|
|
1011
|
+
return new Promise((resolve, reject) => {
|
|
1005
1012
|
waiterMap.set(request, {
|
|
1006
1013
|
resolve,
|
|
1014
|
+
reject,
|
|
1007
1015
|
connectionSymbol
|
|
1008
1016
|
});
|
|
1009
1017
|
});
|
|
@@ -1030,16 +1038,19 @@ const setupWebSocket = (options) => {
|
|
|
1030
1038
|
}
|
|
1031
1039
|
const waiter = waiterMap.get(request);
|
|
1032
1040
|
if (!waiter || waiter.connectionSymbol !== env[CONNECTION_SYMBOL_KEY]) {
|
|
1033
|
-
|
|
1041
|
+
rejectWaiter(request);
|
|
1034
1042
|
if (server.listenerCount("upgrade") === 1) rejectUpgradeRequest(socket, status, responseHeaders);
|
|
1035
1043
|
return;
|
|
1036
1044
|
}
|
|
1037
1045
|
const addResponseHeaders = (headers) => {
|
|
1038
1046
|
appendResponseHeaders(headers, responseHeaders);
|
|
1039
1047
|
};
|
|
1048
|
+
const reclaimWaiterOnClose = () => rejectWaiter(request);
|
|
1049
|
+
socket.once("close", reclaimWaiterOnClose);
|
|
1040
1050
|
wss.on("headers", addResponseHeaders);
|
|
1041
1051
|
try {
|
|
1042
1052
|
wss.handleUpgrade(request, socket, head, (ws) => {
|
|
1053
|
+
socket.off("close", reclaimWaiterOnClose);
|
|
1043
1054
|
wss.emit("connection", ws, request);
|
|
1044
1055
|
});
|
|
1045
1056
|
} finally {
|
|
@@ -1058,7 +1069,12 @@ const upgradeWebSocket = defineWebSocketHelper(async (c, events, options) => {
|
|
|
1058
1069
|
const connectionSymbol = generateConnectionSymbol();
|
|
1059
1070
|
env[CONNECTION_SYMBOL_KEY] = connectionSymbol;
|
|
1060
1071
|
(async () => {
|
|
1061
|
-
|
|
1072
|
+
let ws;
|
|
1073
|
+
try {
|
|
1074
|
+
ws = await waitForWebSocket(env.incoming, connectionSymbol);
|
|
1075
|
+
} catch {
|
|
1076
|
+
return;
|
|
1077
|
+
}
|
|
1062
1078
|
const messagesReceivedInStarting = [];
|
|
1063
1079
|
const bufferMessage = (data, isBinary) => {
|
|
1064
1080
|
messagesReceivedInStarting.push([data, isBinary]);
|