RT
- 具体的页面控制台报错信息为:
```java
Error: server error
at Socket.onPacket (bundle.js:123999:23)
at XHR.Emitter.emit (bundle.js:7702:20)
at XHR.onPacket (bundle.js:124399:11)
at callback (bundle.js:124876:12)
at Array.forEach (<anonymous>)
at XHR.onData (bundle.js:124880:99)
at Request.Emitter.emit (bundle.js:7702:20)
at Request.onData (bundle.js:124669:10)
at Request.onLoad (bundle.js:124720:12)
at XMLHttpRequest.xhr.onreadystatechange (bundle.js:124624:16)
- 具体前台表现为:
前台console打印报告为无限重试连接(在不在失败的情况下掐断的话),后台会打印已连接的信息,随后断开并反复重试。
- 具体后台体现为:(握手未完成,随后大约1分钟左右后端口)
导致原因:
版本不兼容。
解决方式:
请在前端使用2.x版本的socket.io 因为这个项目真的太久之前了,也没有新版的3.x和4.x的socket.io的client。 所以如果你需要使用Java搭建后台,那么需要使用在前台使用2.x的Client或者更换后台。
**
目前测试可以正常连接的版本为:
**
<dependency>
<groupId>com.corundumstudio.socketio</groupId>
<artifactId>netty-socketio</artifactId>
<version>1.7.19</version>
</dependency>
"socket.io-client": "^2.4.0",
回退2版本后测试连接正常。
如果你想使用3.x或4.x或者未来的更新版本,你需要使用官方的后端实现方式(放弃java)或采用另一套后台: https://github.com/socketio/engine.io-server-java 该项目支持4.x和3.x版本socket.io,但是目前网上的教程较少,需要自己摸索一下。
2022年4月4日21:26:16
|