HTTP 服务器:WebSockets
一个处理 WebSocket 请求的 HTTP 服务器示例。
要在默认端口启动服务器,请使用处理程序调用 `Deno.serve`。
Deno.serve((req) => {
首先,我们验证客户端是否正在协商升级到 WebSocket。如果不是,我们可以返回 501 状态码,以表明我们不支持普通的 HTTP 请求。
if (req.headers.get("upgrade") != "websocket") {
return new Response(null, { status: 501 });
}
然后我们可以将请求升级为 WebSocket
const { socket, response } = Deno.upgradeWebSocket(req);
现在我们可以访问一个标准的 WebSocket 对象。让我们来处理“open”事件
socket.addEventListener("open", () => {
console.log("a client connected!");
});
我们也可以以类似的方式处理消息。这里我们设置了一个简单的 ping/pong 示例。
socket.addEventListener("message", (event) => {
if (event.data === "ping") {
socket.send("pong");
}
});
最后,我们返回由 upgradeWebSocket 创建的响应。
return response;
});
使用 Deno CLI 在本地运行此示例
deno run -N https://docs.deno.org.cn/examples/scripts/http_server_websocket.ts