跳至主要内容

HTTP 服务器:WebSockets

一个处理 websocket 请求的 HTTP 服务器示例。

在 Github 上编辑
要以默认端口启动服务器,请使用处理程序调用 `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