在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
相关推荐
IT_陈寒19 分钟前
Vue的v-if和v-show,我竟然用错了这么久
前端·人工智能·后端
云絮.22 分钟前
计算机相关工作原理
服务器·前端·数据库
随风一样自由24 分钟前
【前端+React+缓存竞态】导航切换缓存刷新机制
前端·react.js·缓存
恋猫de小郭32 分钟前
Flutter 开发怎么做 Agent ?从工程实战详细给你解读下
android·前端·flutter
IT_陈寒33 分钟前
React状态更新延迟搞晕我,原来是闭包在捣鬼
前端·人工智能·后端
晓得迷路了34 分钟前
栗子前端技术周刊第 136 期 - pnpr、Flow 重构移植 Rust、Astryx...
前端·javascript·css
柳杉1 小时前
别再手写大屏了!用这套「3D 地图 + 拖拽脚手架」示例源码,交付效率提升 80%
前端·three.js·数据可视化
乌夷1 小时前
Vue.js 3 的设计思路
前端·javascript·vue.js
丨我是张先生丨1 小时前
英语单词 Web Page
前端·css·css3
随风一样自由1 小时前
【前端+Vitest测试框架】Vitest | Playwright | WebdriverIO | Preview
前端·前端框架·可用性测试