Skip to content
This repository has been archived by the owner on Jan 10, 2018. It is now read-only.

iOS simulator跟iOS真机上.conv()没有用 #2

Closed
ramsaylee opened this issue Sep 16, 2015 · 6 comments
Closed

iOS simulator跟iOS真机上.conv()没有用 #2

ramsaylee opened this issue Sep 16, 2015 · 6 comments

Comments

@ramsaylee
Copy link

你好,不好意思再次请教一下。我前面使用你的包在chrome下没有任何问题,但是在iOS simulator跟iOS真机上.conv()没有用,不知道是什么原因?
我用的是ionic,确认客户端跟服务端(leancloud服务器)的连接是成功的,并且在leancloud控制台上看到的在线人数也是正常的,但是.conv()就是没有任何反应。代码是这样的:
realtimeInstance.conv({members: [to_Id]}).then(function(data) {
alert(data.id); //这里没有进
});
我看了一下文档,好像没有提到特别不一样的地方(只有说android的webview有些不一样,需要设置),这些应该都属于浏览器类型的。我什么地方做的有问题呢?有没有什么可以debug的手段?谢谢!

@leeyeh
Copy link
Owner

leeyeh commented Sep 16, 2015

这段代码如果没有进到 fulfill 的回调的话,那么应该是出现异常了,试试能不能 catch 到

realtimeInstance.conv({members: [to_Id]})
  .then(function(data) {
    alert(data.id); 
  })
  .catch(function(err) {
    alert(err.message);
  });

另外,这个项目用在了这个 demo 中,大部分的 API 都有覆盖到,供参考。

@leeyeh
Copy link
Owner

leeyeh commented Sep 16, 2015

还有一种可能,iOS 8 开始浏览器才原生支持 Promise,如果你需要在 iOS 7- 运行的话,需要额外引入 polyfill

@ramsaylee
Copy link
Author

@leeyeh 非常感谢你的及时回复和帮助!
catch异常我昨天也试过了,没有catch到任何东西,事实上then, catch, finally一个都没进,这也是我觉得奇怪的地方。

我刚又在chrome浏览器中试了一下,结果chrome中也不行了,现象跟上面一致。但是之前是可以工作的,我还给你开过另外一个issue。所以,现在已经不是这个issue里提到的同样的问题了,我不知道是不是要关掉这个issue重开一个?
我在.conv同样的地方,试了.ping, .getMyConvs这些同属于realtimeInstancs对象的几个方法,都是正常的,都可以返回promise,并且进到then中。但是.conv跟.room就是不行。这一点我也无法理解。

你给到的demo我前面也看过了,但是没有看到特别不一样的东西。我们的用法应该是一致的。

所以,还有没有其他方法可以定位错误,或者跟我的leancloud账号有关?
麻烦你了,谢谢!

@leeyeh
Copy link
Owner

leeyeh commented Sep 17, 2015

window.realtimeObject = realtimeInstance.conv({members: [to_Id]});
// window.realtimeObject.then(...)

把这个 promise 挂到 window 下,看看是不是一直是 pending 状态。

如果是的话,在调用 realtimeInstance.conv 的地方设个断点,执行完这句之后看下 network 中的那个 websocket 是不是发出了一个 {"cmd":"conv","op":"start","m":["to_Id"], "i": xxxx ...} 的 frame,然后服务器会返回一个 {"i":yyyy,"cmd":"conv","op":"started" ....} (yyyy === xxxx) 的应答。你看下这些是否都正常。

@ramsaylee
Copy link
Author

谢谢你的热心帮助。麻烦你了,实在不好意思。

我不太懂你说的“看看是不是一直是pending状态”是什么意思?如果说的是network中的wss://rtm53.avoscloud.com:6799/这条请求的状态,那么一直都是pending。

上面这个websocket的frame的变化总会有3条,先是
{"cmd":"conv","op":"start","m":[1],"attr":{"name":"","attr":{}},"i":2017,"transient":false,"peerId":2}
然后就是连续两个{}
没有看到你所说的{"i":yyyy,"cmd":"conv","op":"started" ....} (yyyy === xxxx)的应答。

@leeyeh
Copy link
Owner

leeyeh commented Sep 17, 2015

能麻烦你移步到 leancloud 的论坛提供下你的 appid 吗?那里有个类似的问题讨论

应该不是这个模块的问题,这个 issue 我先关了。如有问题请再打开。

@leeyeh leeyeh closed this as completed Sep 17, 2015
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants