在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
相关推荐
容器( ु⁎ᴗ_ᴗ⁎)ु.。oO25 分钟前
仿12306购票系统(3)
java·前端
Fri_29 分钟前
CSS 实现波浪效果
前端·javascript·css
Y_3_732 分钟前
30 分钟从零开始入门 CSS
开发语言·前端·css·人工智能·python·tensorflow
IT、木易36 分钟前
大白话css第二章深入学习
前端·css·学习
祈澈菇凉1 小时前
什么是Sass,如何使用?
前端·rust·sass
渔夫阿布2 小时前
在MAC上面通过HomeBrew安装node和npm@指定版本
前端·macos·npm
huangkaihao2 小时前
深入浅出Webpack:从入门到工程化实践
前端·面试·webpack
勘察加熊人2 小时前
angular轮播图
前端·javascript·angular.js
勘察加熊人3 小时前
angular新闻列表分页
前端·javascript·angular.js
勘察加熊人3 小时前
angular贪吃蛇
前端·javascript·angular.js