你终于get到移动端webview套im的技术痛点了。。。 在WebView里跑Web im这种方式,你在市面上几乎没有见过,原因有以下两个方面: 首先,是体验问题: im这种对体验重度敏感的应用,用户对于界面性能很敏感,因为你的im只要稍稍卡一点点,用户就会立马感觉出来,因为每个人对微信、qq的体验都了如指掌,用你的im马上就能形成:“为什么微信不卡,你的im明显要卡很多”这样的错觉。必竟,无论哪种框架,跟原生性能相比,都没有吹的那么牛。 其次,将遇到IM长连接的技术限制问题: 受限于web技术本身,app里套壳webview的话,它里面的网页中websocket长连接能力其实是受限的。 原因是:以你平时用的浏览器为例,包括websocket对象在内的所有对象,生命周期只在一个window内(即一个页面/窗口内),这个页面/窗口关闭或跳转,此页面内的所有对象都将销毁,也就意味着,没有办法像富客户端原生应用一样,全局持有一个长连接。 浏览器里的websocket,只能是打开这个页面/窗口,建立长连接,关闭或跳转出这个页面,长连接就断了。这就是我说的web端长连接技术问题。 不知道我说的,你是不是理解。 |
我在onlineCheck的方法加了window.RBChatMainUI.doLoginIMServer()就可以了,目前好像没什么问题。 |