Веб-сокеты
Обеспечьте взаимодействие между клиентами и серверами в реальном времени с помощью веб-сокетов. Инструменты для создания интерактивных и динамичных приложений.
Например WebSocket
функция Deno.upgradeWebSocket
upgradeWebSocket(
request: Request,
options?: UpgradeWebSocketOptions,
): WebSocketUpgradeПреобразует входящий HTTP-запрос в запрос веб-сокета.
Получив Request, функция возвращает пару экземпляров WebSocket и Response. Для успешного переключения на веб-сокет необходимо ответить на исходный запрос с помощью возвращённого ответа.
Deno.serve((req) => {
if (req.headers.get("upgrade") !== "websocket") {
return new Response(null, { status: 501 });
}
const { socket, response } = Deno.upgradeWebSocket(req);
socket.addEventListener("open", () => {
console.log("a client connected!");
});
socket.addEventListener("message", (event) => {
if (event.data === "ping") {
socket.send("pong");
}
});
return response;
});
Если тело запроса было затронуто (из него читали) до завершения переключения, переключение завершится ошибкой.
Эта операция пока не потребляет запрос и не открывает веб-сокет. Это происходит только после передачи возвращённого ответа в respondWith().
Параметры
request: Request options: UpgradeWebSocketOptions Тип возвращаемого значения
интерфейс Deno.UpgradeWebSocketOptions
Параметры, которые можно задать при переключении Request на веб-сокет с помощью Deno.upgradeWebSocket.
Свойства
protocol: string Устанавливает свойство .protocol веб-сокета на стороне клиента в указанное здесь значение, которое должно быть одной из строк, заданных в параметре protocols при запросе веб-сокета. Это позволяет клиентам и серверам указывать подпротоколы для взаимодействия друг с другом.
idleTimeout: number Если клиент не ответит на этот кадр сообщением pong в течение указанного тайм-аута, соединение считается неисправным и закрывается. Будут сгенерированы события close и error.
Единица измерения — секунды, значение по умолчанию — 30. Установите значение 0, чтобы отключить тайм-ауты.
socket: import("node:net").Socket node:net Socket из события "upgrade" сервера node:http. Если параметр задан, переключение на веб-сокет выполняется через это существующее TCP-соединение, а не через встроенный механизм переключения Deno.serve. Ответ 101 Switching Protocols записывается автоматически.
import http from "node:http";
const server = http.createServer();
server.on("upgrade", (req, socket, head) => {
const { socket: ws } = Deno.upgradeWebSocket(
new Request(`http://${req.headers.host}/`, {
headers: req.headers as HeadersInit,
}),
{ socket: socket as import("node:net").Socket, head },
);
ws.onmessage = (e) => ws.send(e.data);
});
head: Uint8Array Дополнительные байты, уже буферизованные парсером HTTP и полученные вместе с заголовками запроса на переключение. Это head Buffer из события "upgrade" сервера node:http; их необходимо передать дальше, чтобы эти байты не потерялись.
интерфейс Deno.WebSocketUpgrade
Объект, возвращаемый при запросе Deno.upgradeWebSocket.
Свойства
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/api/deno/websockets