Socket.io学习笔记

本文介绍了Socket.io的基本概念,如命名空间和房间,并探讨了如何与Express集成,使用中间件,以及如何在生命周期中发送消息。Socket.io为浏览器和服务器提供实时、双向通信,兼容WebSocket并处理不支持的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Socket.io是什么

Socket.io是一个用于在浏览器和服务器之间进行实时,双向和基于事件的通信库。
Socket.io包装了websocket,在浏览器支持的情况下优先使用websocket进行连接,否则回退到HTTP长轮询的方式,解决了部分浏览器暂不支持websocket的问题。

安装方法

在node.js服务端使用时,通过npm安装

npm install socket.io

在浏览器中使用时可通过两种方式

第一种

// socket.io在服务端的程序会自动将客户端的文件在该路径下暴露出来,
// 因此直接通过src标签引入即可
<script src="/socket.io/socket.io.js"></script>

第二种

// 在服务端...
// 如果不想通过服务端暴露的文件引用,则可以禁用该功能
const io = require('socket.io')({
   
   
  // 不启用
  serveClient: false
});
// 在客户端
// 然后通过cdn等方式引入(减轻自己服务器的压力)
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js"></script>

与Express一起使用
const app = require('express')();
const server = require('http').createServer(app);
const options = {
   
    /* ... */ };
const io = require('socket.io')(server, options);

io.on('connection', socket => {
   
    /* ... */ });

server.listen(3000);

基本概念

命名空间(namespace)

命令空间是一个通信的通道,它便于分割应用的逻辑

例如:将所有客户端分割成两个空间,一个是Default空间,一个是Admin空间。对于Default空间我们可以做一些通用的操作,而对于Admin空间,我们用于做一些专用的操作。
在这里插入图片描述

// 在服务端...
// 建立admin命名空间
const adminNamespace = io.of('/admin');

// 对admin命名空间中的所有socket使用该中间件
adminNamespace.use((socket, next) => 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tanleiDD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值