c***@163.com
c***@163.com
  • 发布:2024-10-30 01:40
  • 更新:2024-12-13 11:45
  • 阅读:339

【报Bug】支付宝云的Unicloud 中使用websocket一直报异常"java.nio.channels.ClosedChannelException"

分类:uniCloud

产品分类: uniCloud/支付宝小程序云

示例代码:
module.exports = {  
    _before: function() { // 通用预处理器  

    },  
    _onWebsocketConnection: async function(event) {  
        console.log("onWebsocketConnection", event)  
    },  
    _onWebsocketMessage: async function(event) {  
        console.log("onWebsocketMessage", event)  
        const connectionId = event.connectionId;  
        const ws = uniCloud.webSocketServer()  
        await ws.close(connectionId)  
    },  
    _onWebsocketDisConnection: async function(event) {  
        console.log("onWebsocketDisConnection", event)  

    },  
    _onWebsocketError: async function(event) {  
        console.log("onWebsocketError", event)   
    },  
    getWsURL: async function() { // 获取websocket连接地址  
        console.log("getWsURL被调用")  
        const wsRequestParamsObj = {  
            hostIP: "192.1.1.1",  
            command: "1"  
        }  
        const ws = uniCloud.webSocketServer()  
        const hostURL = await ws.signedURL("web-socket-co", wsRequestParamsObj)  
        return hostURL  
    },  

}

操作步骤:
  1. 上传云对象
  2. 用apifox请求URL化的云对象的getWsURL获得ws的连接地址
  3. 用连接地址连接
  4. 发送一条消息

预期结果:

没有进入到_onWebsocketError事件中

实际结果:

进入到了_onWebsocketError事件中,并且报错:"java.nio.channels.ClosedChannelException"

bug描述:

以下是我云对象的全部代码,非常规范的事件处理,但是每当连接上websocket服务后,发送一条消息,ws连接会断开,这个没问题.
但是为什么_onWebsocketError触发了?而且通过云对象的后台日志发现报"java.nio.channels.ClosedChannelException"这个错误?(具体请看第四张图)
我只连接ws,手动断开ws连接,观察后台日志就没有这个报错?这个是为什么?

2024-10-30 01:40 负责人:DCloud_uniCloud_CRL 分享
已邀请:
DCloud_uniCloud_CRL

DCloud_uniCloud_CRL

服务空间ID发一下。

4***@qq.com

4***@qq.com - 我就是我

解决了吗

要回复问题请先登录注册