socketio http 测试 vite vanilla创建项目
| import { io } from "socket.io-client"; |
| import axios from "axios"; |
| |
| const axiosInstance = axios.create({ |
| baseURL: "http://127.0.0.1:9999", |
| timeout: 1000, |
| }); |
| |
| const socket = io("http://localhost:9999/", { |
| path: "/ws/socket.io/", |
| }); |
| |
| document.querySelector<HTMLDivElement>("#app")!.innerHTML = ` |
| <div> |
| <button id='send'>发送axios请求</button> |
| <hr/> |
| <button id='open-socket'>打开socket连接</button> |
| <button id='send-socket'>发送socket请求</button> |
| <button id='close-socket'>断开socket连接</button> |
| </div> |
| `; |
| |
| document.getElementById("send")!.addEventListener("click", async () => { |
| const res = await axiosInstance.get("/httptest"); |
| const oRes = document.createElement("div"); |
| oRes.innerHTML = res.data.data; |
| document.querySelector<HTMLDivElement>("#app")!.appendChild(oRes); |
| }); |
| |
| document.getElementById("open-socket")!.addEventListener("click", async () => { |
| socket.connect(); |
| }); |
| |
| document.getElementById("send-socket")!.addEventListener("click", async () => { |
| const msg = "msg from client"; |
| socket.emit("message", msg); |
| const oRes = document.createElement("div"); |
| oRes.innerHTML = `发送: ${msg}`; |
| document.querySelector<HTMLDivElement>("#app")!.appendChild(oRes); |
| }); |
| |
| document.getElementById("close-socket")!.addEventListener("click", async () => { |
| socket.close(); |
| }); |
| |
| let runningFlag = false; |
| |
| document.addEventListener("keypress", (e: KeyboardEvent) => { |
| |
| if (runningFlag) return; |
| const key = e.key; |
| if (key === "w") { |
| console.log("forward"); |
| socket.emit("forward", 0.8); |
| } else if (key === "s") { |
| console.log("backward"); |
| socket.emit("backward", 0.8); |
| } else if (key === "a") { |
| console.log("turnleft"); |
| socket.emit("turnleft", 0.5); |
| } else if (key === "d") { |
| console.log("turnright"); |
| socket.emit("turnright", 0.5); |
| } |
| }); |
| |
| document.addEventListener("keyup", (e: KeyboardEvent) => { |
| const key = e.key; |
| if (key === "w") { |
| socket.emit("stop"); |
| } else if (key === "s") { |
| socket.emit("stop"); |
| } else if (key === "a") { |
| socket.emit("stop"); |
| } else if (key === "d") { |
| socket.emit("stop"); |
| } |
| }); |
| |
| socket.on("completed", (res: any) => { |
| console.log(res); |
| |
| runningFlag = false; |
| }); |
| |
| socket.on("connect", () => { |
| console.log("~~connect success~~"); |
| }); |
| |
| socket.on("disconnect", (response: any) => { |
| console.log("~~ disconnect ~~" + response); |
| }); |
| |
| socket.on("message", (response) => { |
| console.log(`收到: ${response}`); |
| |
| const oRes = document.createElement("div"); |
| oRes.innerHTML = `收到: ${response}`; |
| document.querySelector<HTMLDivElement>("#app")!.appendChild(oRes); |
| }); |
| |
| |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战