觉得就是容器网关没能解析这网址,但我又不知如何配置。callContainer的http请求网关就能解析,头疼。大神门救一下
wx.cloud.connectContainer无法连接后端websockethttps://developers.weixin.qq.com/minigame/dev/wxcloudrun/src/ 问题:wx.cloud.connectContainer无法连接后端websocket,请求网址为'wss://express-u811-prod-xxx-xxx.ap-xxx.run.wxcloudrun.com/ws',报错1006,都没请求到后端。 容器启动绑定端口27082:27081。直接请求ws://127.0.0.1:27081/ws,是能建立连接的。 代码:用的是官方示例 客户端 export const websocketTest = async (flag) => { const { socketTask } = await wx.cloud.connectContainer({ config: { env: env, }, service: server_name, // 替换自己的服务名 path: '/ws' }) socketTask.onMessage(function (res) { console.log(flag, '【WEBSOCKET】', res.data) }) socketTask.onOpen(async function (res) { console.log(flag,'【WEBSOCKET】', '链接成功!', res) socketTask.send({ data: '这是小程序消息' }) }) socketTask.onClose(async function (err) { console.log(flag,'【WEBSOCKET】链接关闭!') console.log(err) }) return socketTask } websocketTest('1') websocketTest('2') // 故意多发起一次链接 node后端 const application = express(); const {app} = expressWS(application) const connect = {} app.ws('/ws', function (ws, req) { let openid = req.headers['x-wx-openid'] // 从header中获取用户openid信息 if (openid == null) { // 如果不存在则不是微信侧发起的 openid = new Date().getTime() // 使用时间戳代替 } if (connect[openid] != null) { // 判断用户是否有连接 ws.send('当前用户已经在其他设备连接过,无法重复连接') // 发送重复连接信息 ws.close() // 关闭连接 } else { connect[openid] = { // 记录用户信息 openid: openid, // 用户openid source: req.headers['x-wx-source'] || '非微信', // 用户微信来源 unionid: req.headers['x-wx-unionid'] || '-', // 用户unionid ip: req.headers['x-forwarded-for'] || '未知' // 用户所在ip地址 } console.log('链接请求头信息', req.headers) ws.on('message', function (msg) { console.log('收到消息:', msg) ws.send(`收到-${msg}`) }) ws.on('error', function(error) { console.error('WebSocket连接错误:', error); }); ws.on('close', function (code, reason) { console.log('链接断开:', openid, code, reason.toString('utf-8')) delete connect[openid] }) console.log("end....") } })
08-22