HTTP 伺服器:WebSockets
在 Github 上編輯
一個處理 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://deno-docs.dev.org.tw/examples/scripts/http_server_websocket.ts