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!
我正在尝试使用 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!