您当前的位置: 首页 >  交互

彭世瑜

暂无认证

  • 3浏览

    0关注

    2791博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

node.js: socket.io服务端和客户端交互示例

彭世瑜 发布时间:2022-07-27 10:33:06 ,浏览量:3

实现效果 在这里插入图片描述 文档:

  • https://socket.io/

安装依赖

npm install express socket.io

修改 package.json

"type": "module",
服务端代码
// server.js
import express from "express";
import { createServer } from "http";
import { Server } from "socket.io";
import path from "path";

const __dirname = path.resolve();

const app = express();
const server = createServer(app);
const io = new Server(server);

// http
app.get("/", (req, res) => {
  res.sendFile(__dirname + "/index.html");
});

// websocket
io.on("connection", (client) => {
  console.log("socket connection");

  // 消息发送
  client.on("chat message", (msg) => {
    io.emit("chat message", msg);
  });

  // 断开连接
  client.on("disconnect", () => {
    console.log("socket disconnect");
  });
});

server.listen(3000, () => {
  console.log("server start");
});
客户端代码



  
  发送







  const form = document.querySelector("#form");
  const input = document.querySelector("#input");
  const messageList = document.querySelector("#message-list");

  const socket = io();

  // 发送消息
  form.addEventListener("submit", function (event) {
    event.preventDefault();
    if (input.value) {
      socket.emit("chat message", input.value);
      input.value = "";
    }
  });

  // 接收消息
  socket.on("chat message", (msg) => {
    const li = document.createElement("li");
    li.textContent = msg;
    messageList.appendChild(li);
  });

关注
打赏
1665367115
查看更多评论
立即登录/注册

微信扫码登录

0.1038s