Deno.land 未找到 WS 模块

Deno.land WS module not found

我正在尝试使用 deno 标准库中的 deno. I've seen that there is / was a "ws" 模块设置一个 WebSocket 服务器,但在当前版本中已经没有了。

我应该使用旧的 std 库还是将此模块移到其他地方?

ws 已弃用,然后 removed in std@0.118.0, It is recommended to use Deno.upgradeWebSocket 将传入的 HTTP 请求升级为 WebSocket 连接。

这是 Deno 中基本 WebSocket 服务器和客户端的示例(受 this post 启发):

// server.js

async function handleConn(conn) {
  const httpConn = Deno.serveHttp(conn);
  
  for await (const e of httpConn) {
    e.respondWith(handle(e.request));
  }
}

function handle(req) {
  if (req.headers.get("upgrade") != "websocket") {
    return new Response("not trying to upgrade as websocket.");
  }

  // Upgrade the incoming HTTP request to a WebSocket connection
  const { socket, response } = Deno.upgradeWebSocket(req);
  socket.onopen = () => console.log("socket opened");
  socket.onmessage = (e) => {
    console.log("socket message:", e.data);
    socket.send(new Date().toString());
  };
  socket.onerror = (e) => console.log("socket errored:", e.message);
  socket.onclose = () => console.log("socket closed");

  return response;
}

const listener = Deno.listen({ hostname: "localhost", port: 8080 });

for await (const conn of listener) {
  handleConn(conn);
}
// client.js

const ws = new WebSocket("ws://localhost:8080/");

// Connection opened
ws.addEventListener('open', function (_event) {
    ws.send('Hello Server!');
});

运行 client.js:

之后服务器上的预期输出
socket opened
socket message: Hello Server!