HTTP 服务器:WebSockets
一个处理 websocket 请求的 HTTP 服务器示例。
要以默认端口启动服务器,请使用处理程序调用 `Deno.serve`。
Deno.serve((req) => {
首先,我们验证客户端是否正在协商升级到 websockets。如果不是,我们可以给出 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 --allow-net https://docs.deno.org.cn/examples/http-server-websocket.ts