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

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

image.png

安装依赖

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

客户端代码

<!-- index.html -->
<!-- 消息输入 -->
<form id="form">
  <input id="input" type="text" />
  <button>发送</button>
</form>
<!-- 消息显示 -->
<div id="message-list"></div>
<script src="socket.io/socket.io.js"></script>
<script>
  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);
  });
</script>
目录
打赏
0
0
0
0
58
分享
相关文章
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
Midscene.js 是一款基于 AI 技术的 UI 自动化测试框架,通过自然语言交互简化测试流程,支持动作执行、数据查询和页面断言,提供可视化报告,适用于多种应用场景。
1877 1
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
基于 Node.js Socket 算法搭建局域网屏幕监控系统
在数字化办公环境中,局域网屏幕监控系统至关重要。基于Node.js的Socket算法实现高效、稳定的实时屏幕数据传输,助力企业保障信息安全、监督工作状态和远程技术支持。通过Socket建立监控端与被监控端的数据桥梁,确保实时画面呈现。实际部署需合理分配带宽并加密传输,确保信息安全。企业在使用时应权衡利弊,遵循法规,保障员工权益。
140 7
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
233 5
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
164 4
【JavaScript】网页交互的灵魂舞者
本文介绍了 JavaScript 的三种引入方式(行内、内部、外部)和基础语法,包括变量、数据类型、运算符、数组、函数和对象等内容。同时,文章还详细讲解了 jQuery 的基本语法和常用方法,如 `text()`、`html()`、`val()`、`attr()` 和 `css()` 等,以及如何插入和删除元素。通过示例代码和图解,帮助读者更好地理解和应用这些知识。
102 1
【JavaScript】网页交互的灵魂舞者
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
236 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
揭秘!前端大牛们如何巧妙利用JavaScript,打造智能交互体验!
【10月更文挑战第30天】前端开发领域充满了无限可能与创意,JavaScript作为核心语言,凭借强大的功能和灵活性,成为打造智能交互体验的重要工具。本文介绍前端大牛如何利用JavaScript实现平滑滚动、复杂动画、实时数据更新和智能表单验证等效果,展示了JavaScript的多样性和强大能力。
182 4
宝塔面板部署Vue项目、服务端Node___配置域名
本文介绍了如何使用宝塔面板在阿里云服务器上部署Vue项目和Node服务端项目,并配置域名。文章详细解释了安装宝塔面板、上传项目文件、使用pm2启动Node项目、Vue项目打包上传、以及通过Nginx配置域名和反向代理的步骤。
1916 1
宝塔面板部署Vue项目、服务端Node___配置域名
IO 多路复用? 什么是 IO 多路复用? 简单示例(日常生活)来解释 IO 多路复用 一看就懂! 大白话,可爱式(傻瓜式)教学! 保你懂!
本文通过日常生活中的简单示例解释了IO多路复用的概念,即一个线程通过监控多个socket来处理多个客户端请求,提高了效率,同时介绍了Linux系统中的select、poll和epoll三种IO多路复用的API。
431 2

热门文章

最新文章

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问