在react中使用socket.io

客户端初始化

ts 复制代码
// src/utils/socket.ts
import { io } from 'socket.io-client';

export const socket = io('ws://localhost:3001', {
  autoConnect: false,
  // transports: ['websocket'],
  auth: (cb: (token: object) => void) => {
    cb({ token: localStorage.getItem('token') });
  },
});

参数介绍

  1. autoConnect默认为true。客户端立即打开与服务器的连接。设置false后,需要手动维护ws连接。
  2. auth 携带鉴权信息。服务端获取方式:client.handshake?.auth?.token

演示代码

ts 复制代码
  useEffect(() => {
    const onConnect = () => {
      console.log('connected');
      socket.volatile.emit('joinRoom', {
        chatroomId: chatroomId,
      });
    };

    const onConnectError = (err: any) => {
      console.log('error', err);
    };

    const onDisconnect = (reason: Socket.DisconnectReason) => {
      console.log('disconnect', reason);
    };

    socket.on('connect', onConnect);
    socket.on('connect_error', onConnectError);
    socket.on('disconnect', onDisconnect);
    socket.connect();
    return () => {
      socket.off('connect', onConnect);
      socket.off('connect_error', onConnectError);
      socket.off('disconnect', onDisconnect);
      socket.disconnect();
    };
  }, [chatroomId]);

参考

  1. How to use with React
相关推荐
有一个好名字43 分钟前
Agent Loop —— 一切从那个 while 循环开始
前端·javascript·chrome
一天睡25小时44 分钟前
Claude Code 指令入门教程
前端
yingyima1 小时前
正则表达式实战:从日志中精准提取关键字段
前端
TeamDev1 小时前
如何在 DotNetBrowser 中使用本地 AI 模型
前端·后端·.net
谢尔登1 小时前
10_从 React Hooks 本质看 useState
前端·ubuntu·react.js
辰同学ovo1 小时前
从全局登录状态管理学习 Redux
前端·javascript·学习·react.js
陈随易2 小时前
2年没用Nodejs了,Bun很香
前端·后端·程序员
donecoding2 小时前
Corepack 完全解析:从懵到懂,包管理器自由了
前端·node.js·前端工程化
yqcoder2 小时前
端经典面试题:为什么 0.1 + 0.2 !== 0.3?
前端·css
ZC跨境爬虫2 小时前
跟着 MDN 学 HTML day_12:(HTML网页图片嵌入)
前端·javascript·css·ui·html