正向连接到napcat会断开连接
Closed this issue · 5 comments
dokurorz commented
问题描述
napcat版本2.4.4,系统为Debian 11.9 (5.10.209-2),overflow正向连接到napcat,会断开连接,overflow报错如下,napcat内无日志
2024-09-11 14:47:29 I/Onebot: Overflow v2.16.0-795845b-SNAPSHOT 正在运行
2024-09-11 14:47:29 I/Onebot: 连接到 WebSocket: ws://172.18.0.1:3001
2024-09-11 14:47:29 I/Onebot: ▌ 已连接到服务器 ┈━═☆
2024-09-11 14:47:29 E/top.mrxiaom.overflow.internal.deps.websocket.drafts.Draft_6455: Runtime exception during onWebsocketMessage
java.lang.UnsupportedOperationException: JsonNull
at top.mrxiaom.overflow.internal.deps.gson.JsonElement.getAsString(JsonElement.java:187)
at cn.evole.onebot.sdk.util.json.JsonsObject.optString(JsonsObject.java:68)
at cn.evole.onebot.sdk.util.json.JsonsObject.optString(JsonsObject.java:64)
at cn.evolvefield.onebot.client.handler.ActionHandler.onReceiveActionResp(ActionHandler.kt:36)
at cn.evolvefield.onebot.client.connection.WSClient.onMessage(WSClient.kt:61)
at top.mrxiaom.overflow.internal.deps.websocket.client.WebSocketClient.onWebsocketMessage(WebSocketClient.java:636)
at top.mrxiaom.overflow.internal.deps.websocket.drafts.Draft_6455.processFrameText(Draft_6455.java:986)
at top.mrxiaom.overflow.internal.deps.websocket.drafts.Draft_6455.processFrame(Draft_6455.java:910)
at top.mrxiaom.overflow.internal.deps.websocket.WebSocketImpl.decodeFrames(WebSocketImpl.java:402)
at top.mrxiaom.overflow.internal.deps.websocket.WebSocketImpl.decode(WebSocketImpl.java:241)
at top.mrxiaom.overflow.internal.deps.websocket.client.WebSocketClient.run(WebSocketClient.java:516)
at java.base/java.lang.Thread.run(Thread.java:829)
2024-09-11 14:47:29 E/Onebot: ▌ 出现错误 JsonNull 或未连接 ┈━═☆
2024-09-11 14:47:29 I/Onebot: ▌ 服务器连接因 未知原因 已关闭 (关闭码: NORMAL)
2024-09-11 14:47:39 W/Onebot: Request failed: [get_version_info, echo=0] Mutex is not locked
2024-09-11 14:47:39 E/Onebot: 未连接到 Onebot
尝试了反向连接,没有问题
2024-09-11 15:15:58 I/Onebot: Overflow v2.16.0-795845b-SNAPSHOT 正在运行
2024-09-11 15:15:58 I/Onebot: 在端口 3003 开启反向 WebSocket 服务端
2024-09-11 15:15:58 I/Onebot: ▌ 反向 WebSocket 服务端已在 0.0.0.0/0.0.0.0:3003 启动
2024-09-11 15:15:58 I/Onebot: ▌ 正在等待客户端连接...
2024-09-11 15:19:00 I/Onebot: ▌ 反向 WebSocket 客户端 /172.18.0.2:42920 已连接 ┈━═☆
2024-09-11 15:19:00 I/Onebot: 服务端版本信息
{
"status": "ok",
"retcode": 0,
"data": {
"app_name": "NapCat.Onebot",
"protocol_version": "v11",
"app_version": "2.4.4"
},
"message": "",
"wording": "",
"echo": 0
}
2024-09-11 15:19:01 V/Bot.114514: Event: BotOnlineEvent(bot=Bot(114514))
napcat 1.8.6版本正向连接正常
复现
napcat正向连接配置
{
...
...
"ws": {
"enable": true,
"host": "0.0.0.0",
"port": 3001
},
...
...
"token": "114514",
}
overflow正向连接配置
{
"ws_host": "ws://172.18.0.1:3001",
"reversed_ws_port": -1,
"token": "114514",
"retry_times": 5,
"retry_wait_mills": 5000,
"retry_rest_mills": 60000
}
Overflow 版本
Overflow v2.16.0-795845b-SNAPSHOT
其他组件版本
No response
系统日志
No response
网络日志
No response
补充信息
No response
MrXiaoM commented
网络日志。
还有,建议你看一下你用的版本是什么时候发布的
dokurorz commented
网络日志。 还有,建议你看一下你用的版本是什么时候发布的
我天,我还用mcl -u
更新了下overflow,怎么更新到旧版本去了
dokurorz commented
更新到最新版本后,正向连接依然报错,反向连接正常,对java不是很熟悉,网络日志是要怎么抓取
2024-09-11 15:53:06 I/Onebot: Overflow v0.9.9.499-fc0a336-SNAPSHOT.499 正在运行
2024-09-11 15:53:06 I/Onebot: 连接到 WebSocket: ws://172.18.0.1:3001
2024-09-11 15:53:06 I/Onebot: ▌ 已连接到服务器 ┈━═☆
2024-09-11 15:53:06 I/Onebot: ▌ 服务器连接因 未知原因 已关闭 (关闭码: NORMAL)
2024-09-11 15:53:06 W/Onebot: 等待 5.0 秒后重连 (第 1/5 次)
2024-09-11 15:53:06 E/main: Exception in coroutine MiraiConsoleImplementationTerminal
java.lang.IllegalStateException: 无法获取该 Onebot 实现的版本信息 [unknown (12 request)],确定你连接的 Onebot 实现为 Onebot 11 或 Onebot 12 吗?
at cn.evolvefield.onebot.client.core.Bot.getVersionInfo(Bot.kt:1355)
at top.mrxiaom.overflow.internal.Overflow.start0(Overflow.kt:265)
at top.mrxiaom.overflow.internal.Overflow.start0$default(Overflow.kt:213)
at top.mrxiaom.overflow.internal.Overflow.startWithConfig(Overflow.kt:195)
at top.mrxiaom.overflow.internal.Overflow.startWithConfig$default(Overflow.kt:190)
at top.mrxiaom.overflow.internal.plugin.OverflowCoreAsPlugin.startWithConfig$overflow_core(OverflowCoreAsPlugin.kt:329)
at top.mrxiaom.overflow.internal.plugin.OverflowCoreAsPlugin.startWithConfig$overflow_core$default(OverflowCoreAsPlugin.kt:328)
at top.mrxiaom.overflow.internal.plugin.OverflowCoreAsPlugin.onPostStartup(OverflowCoreAsPlugin.kt:325)
at top.mrxiaom.overflow.internal.plugin.OverflowCoreAsPlugin.access$onPostStartup(OverflowCoreAsPlugin.kt:50)
at top.mrxiaom.overflow.internal.plugin.OverflowCoreAsPlugin$onEnable$1.invokeSuspend(OverflowCoreAsPlugin.kt:116)
at top.mrxiaom.overflow.internal.plugin.OverflowCoreAsPlugin$onEnable$1.invoke(OverflowCoreAsPlugin.kt)
at top.mrxiaom.overflow.internal.plugin.OverflowCoreAsPlugin$onEnable$1.invoke(OverflowCoreAsPlugin.kt)
at net.mamoe.mirai.event.EventChannel$subscribeOnce$1.invokeSuspend(EventChannel.kt:515)
at net.mamoe.mirai.event.EventChannel$subscribeOnce$1.invoke(EventChannel.kt)
at net.mamoe.mirai.event.EventChannel$subscribeOnce$1.invoke(EventChannel.kt)
at net.mamoe.mirai.internal.event.SafeListener$onEvent$2.invokeSuspend(SafeListener.kt:59)
at net.mamoe.mirai.internal.event.SafeListener$onEvent$2.invoke(SafeListener.kt)
at net.mamoe.mirai.internal.event.SafeListener$onEvent$2.invoke(SafeListener.kt)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:169)
at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
at net.mamoe.mirai.internal.event.SafeListener.onEvent(SafeListener.kt:59)
at net.mamoe.mirai.internal.event.EventListeners.process(EventListeners.kt:113)
at net.mamoe.mirai.internal.event.EventListeners.callListeners$overflow_core(EventListeners.kt:67)
at net.mamoe.mirai.internal.event.EventChannelImpl.callListeners(EventChannelImpl.kt:86)
at net.mamoe.mirai.internal.event.EventChannelImpl.broadcastEventImpl(EventChannelImpl.kt:76)
at top.mrxiaom.overflow.internal.Overflow.broadcastEvent(Overflow.kt:387)
at net.mamoe.mirai.event.EventKt.broadcast(Event.kt:161)
at net.mamoe.mirai.console.internal.MiraiConsoleImplementationBridge$doStart$13$1.invokeSuspend(MiraiConsoleImplementationBridge.kt:457)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
2024-09-11 15:53:11 I/Onebot: 正在重连...
2024-09-11 15:53:11 I/Onebot: ▌ 已连接到服务器 ┈━═☆
2024-09-11 15:53:11 I/Onebot: ▌ 服务器连接因 未知原因 已关闭 (关闭码: NORMAL)
MrXiaoM commented
dokurorz commented
😁我的,看了眼网络日志,报的是token错误,应该是token带特殊字符的问题
2024-09-11 16:07:26 I/Onebot: Overflow v0.9.9.499-fc0a336-SNAPSHOT.499 正在运行
2024-09-11 16:07:26 I/Onebot: 连接到 WebSocket: ws://172.18.0.1:3001
2024-09-11 16:07:26 I/Onebot: ▌ 已连接到服务器 ┈━═☆
2024-09-11 16:07:26 D/Onebot: [Send] --> {"action":"get_version_info","echo":0}
2024-09-11 16:07:26 D/Onebot: [Recv] <-- {"status":"failed","retcode":1403,"data":null,"message":"token验证失败","wording":"token验证失败","echo":null}
去掉特殊字符正向和反向就OK了,但是带特殊字符时反向又是OK的,原token是类似以下这样的
lhrC&Oynae9&&0W*lU1V