socket.io-client 和egg-socket.io搭配使用 注意的坑

前端项目用的react + socket.io-client

服务端用的egg egg的官网上有配合使用的egg-socket.io

一开始链接不上,起初觉得应该是前端连接问题,这个过程中我修改过连接和transports方式,但是都没有作用

const socket = io('ws://127.0.0.1:7001', {
	path: '',
	transports: ['websocket', 'xhr-polling', 'jsonp-polling'],
})

然后开始从监听事件上做文章

socket.on('connect', () => {});

接收服务端方法myevent传过来的参数 socket.on('myevent', () => {});

connect_error | disconnect | reconnect | reconnect_attempt [具体文档](https://www.w3cschool.cn/socket/socket-k49j2eia.html)

没找到问题开始查找服务端的代码是否有错误

1、查看代理的方法是否写的对

2、命名空间问题

最终发现是版本的问题:当前egg-socket.io 是4.1.6 socket.io-client为4.1.1, connect_error这个监听器报客户端和服务端socket.io版本不匹配

以egg-socket.io/4.1.6为例,搭配的socket.io-client应为2.1.1

一定要注意node_modules里的egg-socket.io依赖的socket.io-client版本号!!!

import io from 'socket.io-client'

const socket = io('ws://127.0.0.1:7001')
socket.on("connect", () => {
  socket.on("res", (data: any) => {
	console.log('res=>>>', data);
  });
});

socket文档

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章