前端项目用的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);
});
});