小程序
小游戏
企业微信
微信支付
扫描小程序码分享
我在app.js中使用SocketTask创建socket连接,创建连接成功了,但是用SocketTask监听onOpen事件没有执行
我是在app.js执行onLaunch函数建立websocket连接,连接建立成功后,在登陆页面使用socketTask调用方法监听socket打开事件,没有执行,socketTask打印如下:
5 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
我也遇到这个问题了,怎么解决,求助求助
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
什么玩意更不不好使, var socket_ = uni.connectSocket({
url: VUE_APP_WS_URL,
success:e => {
console.log(store.getters.webSocket)
console.log(e)
socket_.onOpen()
}
});
这么写吗
是的,先在wx.connectSocket的success里面判断成功后,再使用SocketTask进行后续操作。问题可以解决。
不知道是我没看懂,还是这个设计有点2.。。
socketTask需要wx.connectSocket操作才能返回,而connectSocket是异步进行websocket连接的。
然后如果要在socketTask里面监听onOpen,那只能在wx.connectSocket之后才能有socketTask对象,当拿到这个sockeTask对象的时候,因为wx.connectSocket是异步执行,那么这时有可能websocket已经建立了,是否意味着此时再去调用socketTask.onOpen就收到不onOpen的消息了。而如果此时wx.connectSocket异步连接还没有建立,那此时调用socketTask.onOpen就能收到连接建立的回调。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
我也遇到这个问题了,怎么解决,求助求助
什么玩意更不不好使, var socket_ = uni.connectSocket({
url: VUE_APP_WS_URL,
success:e => {
console.log(store.getters.webSocket)
console.log(e)
socket_.onOpen()
}
});
这么写吗
是的,先在wx.connectSocket的success里面判断成功后,再使用SocketTask进行后续操作。问题可以解决。
不知道是我没看懂,还是这个设计有点2.。。
socketTask需要wx.connectSocket操作才能返回,而connectSocket是异步进行websocket连接的。
然后如果要在socketTask里面监听onOpen,那只能在wx.connectSocket之后才能有socketTask对象,当拿到这个sockeTask对象的时候,因为wx.connectSocket是异步执行,那么这时有可能websocket已经建立了,是否意味着此时再去调用socketTask.onOpen就收到不onOpen的消息了。而如果此时wx.connectSocket异步连接还没有建立,那此时调用socketTask.onOpen就能收到连接建立的回调。
因为按正常socket/websocket的设计,那应该是提供接口返回一个未连接的socket,然后再在socket里面进行onOpen、onClose以及connect等操作,这样就不会出现异步连接收不到onOpen了