我吃柠檬
我吃柠檬
  • 发布:2019-05-08 09:26
  • 更新:2020-01-04 11:19
  • 阅读:5580

自定义组件模式下uni.onSocketMessage不执行

分类:uni-app

使用uni的socket在自定义组件模式下,创建连接、监听打开、发送消息都执行,但是uni.onSocketMessage获取服务器消息怎么不执行,在之前的template模板模式就都可以执行

2019-05-08 09:26 负责人:无 分享
已邀请:
小张没有名字

小张没有名字

新版本Socket一直有问题

我吃柠檬

我吃柠檬 (作者) - .....

新用的组件(有vue的slot插槽)在template模板模式又不能用,用新的自定义组件模式,uni.sendSocketMessage又不执行了,我是服气了

我吃柠檬

我吃柠檬 (作者) - .....

有人知道咋回事不

我吃柠檬

我吃柠檬 (作者) - .....

有人知道咩

我吃柠檬

我吃柠檬 (作者) - .....

官方可以看看不

小张没有名字

小张没有名字

官方可以看看不

我吃柠檬

我吃柠檬 (作者) - .....

我哭了,你们呢

  • 小张没有名字

    回复 hhyang: 你这个是socket.io吗?


    2019-05-09 17:06

  • 我吃柠檬 (作者)

    回复 hhyang: 我这边试的不行,你自己试下


    2019-05-09 17:24

  • hhyang

    回复 我吃柠檬: 我提供给你的我亲测 是可以的,刚又测试了下。 编译器版本:1.9.4,当前项目编译模式:自定义组件模式。


    2019-05-10 10:02

我吃柠檬

我吃柠檬 (作者) - .....

有人知道怎么解决吗

ZGH0709

ZGH0709

测试Bug未复现, uni.sendSocketMessage 可以发送消息。 你是报错还是不执行?可以提供示例 demo 吗?

  • 我吃柠檬 (作者)

    抱歉,是uni.onSocketMessage监听服务器消息不行,麻烦看下


    2019-05-10 12:59

  • 我吃柠檬 (作者)

    是不执行,在旧的template模板模式就可以,切换到新的自定义组件模式就不行了,新建了个项目也不可以


    2019-05-10 13:01

  • ZGH0709

    回复 我吃柠檬: 可以执行的, 你提供下不执行的 demo. 运行在什么平台,什么版本也可以提供下


    2019-05-10 13:38

  • 我吃柠檬 (作者)

    回复 ZGH0709: 可以加下qq吗


    2019-05-10 13:43

  • hhyang

    回复 我吃柠檬:作者真的是牛啊,demo 给了还不行?


    2019-05-10 13:43

  • ZGH0709

    回复 我吃柠檬: 这里就可以贴代码的,可以设置仅管理员可见。


    2019-05-10 19:06

  • h***@163.com

    你好,我也不行,我代码贴给你, 服务端是GatewayWorker, 原先是用layim做的,同一个服务器layim那个是正常的。

    console.log("开始connect.........")

    uni.connectSocket({

    url: 'ws://127.0.0.1:8282',

    success: function() {

    console.log("WebSocket连接成功");

    uni.onSocketOpen(function(res) {

    console.log('WebSocket连接已打开');


    						let msg = '测试';  
    uni.sendSocketMessage({
    data: msg,
    success: function(){
    console.log("数据发送成功,数据为:" + msg);
    //-----------------------------------------
    console.log("数据发送结束,开始接收");
    uni.onSocketMessage(function(res) {
    isReceive = true;
    console.log('收到服务器内容:' + res.data);
    })
    //--------------------------------------
    },
    fail: function() {
    console.log("数据发送失败")
    }
    })

    uni.onSocketClose(function(res){
    console.log("websocket已关闭");
    })
    })
    },
    fail: function(){
    console.log('设备初始化失败');
    },
    })
    uni.onSocketError(function(res) {
    console.log('WebSocket连接打开失败,请检查!');
    return false;
    });

    2019-06-19 16:52

  • ZGH0709

    回复 h***@163.com: 贴下 demo,也可以自己写个简单的node socket 服务测试下,看是否是服务端的问题。


    2019-06-19 19:59

  • h***@163.com

    回复 ZGH0709: 我已经说了,同一个服务端,另外一个layim写的,没有任何问题。


    2019-06-19 20:56

  • h***@163.com

    客户端用layim的,没有问题


    2019-06-19 20:56

  • ZGH0709

    回复 h***@163.com: 上传可复现 demo,我们帮你排查。


    2019-06-20 10:33

1***@qq.com

1***@qq.com

解决了么

舌尖跳舞

舌尖跳舞 - 现在不减肥,以后徒伤悲。

我的也是 onSocketMessage 监听不到 ,不过我的是APP。H5和小程序都没问题

  • Angels_aria

    找到问题了吗?我的也是h5可以,APP不行


    2019-07-22 10:39

舌尖跳舞

舌尖跳舞 - 现在不减肥,以后徒伤悲。

你的解决了吗

  • 舌尖跳舞

    回复 hhyang: 问题是我有这回事


    2019-06-19 16:33

  • hhyang

    回复 舌尖跳舞: https://github.com/SilurianYang/uni-app-tools/tree/master/uni-app-chat 这个你试了么


    2019-06-19 16:47

  • 舌尖跳舞

    回复 hhyang: 不能用,我看了你的代码,你用的不也是 uni.onSocketMessage 吗。我的就是这个监听不到


    2019-06-19 17:27

  • 舌尖跳舞

    回复 hhyang: 没解决我也给你十个赞啊。你QQ的赞是挺多的


    2019-06-19 17:47

hhyang

hhyang - 如有问题,请添加QQ1606726660 备注付费咨询

测试视频以上 自己看 测试demo 在github上点击查看demo 别一天天就在这里喷 给你解决问题是本分 不是应该的

嗜睡症

嗜睡症

作者你好,我想问一下你这个问题解决了吗?我这也遇到偶尔成功的情况

张德帅

张德帅

今天看了下 好像还是没解决

水沟小鱼

水沟小鱼 - 90后

同问啊!app用户不来,ios用不了,官方为什么搞不好这个socket呢?哭了

小巷而已

小巷而已

uni.onSocketOpen在H5和安卓APP都能监听到,就是ios app监听不到,根本不触发监听,但是连接返回的又是"connectSocket:ok",有解决的吗?

小巷而已

小巷而已

我解决了!
在connectSocket连接时,GET参数包含 | ,对就是有竖线,就不行...

6***@qq.com

6***@qq.com

我解决了这个问题,但方法并不好,希望官方能优化一下
测试过多次,发现onSocketMessage的确是有概率不执行的,但能确定的是它是有作用的,无论什么端
所以我写了一个定时器去不断执行onSocketMessage,直到能执行为止,能暂时满足项目需求
let timer = setInterval(function(){
uni.onSocketMessage(function(res){
clearInterval(timer);
console.log('接收数据:'+ res.data)
})
}, 100)

rabet

rabet - 开发,技术服务

已解决此问题>

查看链接
https://ask.dcloud.net.cn/article/36623

lifeng_dev

lifeng_dev

请问自定义组件模式就是使用了 hello uniapp里面的扩展组件吗,例如 uni-list

牛油果

牛油果

现在解决了吗

hhyang

hhyang - 如有问题,请添加QQ1606726660 备注付费咨询

使用这个全局开启试试呢? https://github.com/SilurianYang/uni-app-tools/blob/master/uni-app-chat/socket.js

  • h***@163.com

    你这个我试过,一样问题,不行。跟官方的一样,能连上但收不到消息,偶尔可以


    2019-06-18 18:19

  • h***@163.com

    回复 hhyang: 你的写法,就是把官方的封装了。你自己测试好来,在来这这么肯定的回答。不行就不行,我没必要说谎,我也想早点解决。


    2019-06-19 16:42

  • h***@163.com

    回复 hhyang: 你自己测试,是在什么环境测试的,我是安卓app。浏览器可以,我试过,官方的也可以。


    2019-06-19 16:44

  • side9527

    回复 hhyang: 额,我刚刚也试了,真的是在APP用不了。。


    2019-09-27 15:28

该问题目前已经被锁定, 无法添加新回复