怪奇物语

怪奇物语

首页 新随笔 联系 管理

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
  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);
});


posted on 2023-02-01 17:20  超级无敌美少男战士  阅读(143)  评论(0)    收藏  举报