ios websocket电量占用太高【已查明为IOS本身问题】

认真看完截图,感觉不合理难道ccc在iOS用了什么有已知bug的websocket lib?如果该lib独自跑这个流速不会有发热问题的话,那是jsb和C++通讯高频时耗电咯?

这么说来CCC其实不适合做帧同步, 不是技术的问题, 而是引擎在网络通讯上消耗太高

1赞

为啥不可以?用个充电宝不就好了吗?

你不如建议玩家搬到离水电站近的地方

:joy:本来ccc就只适合做h5 要真做原生 根本没理由用ccc来做。选择问题吧

看看这个 2.4.2 CPU占用率大幅度增加,发热耗电严重很多

3.3 不是修复了吗?

应该不是同一个问题,我们会跟进处理一下

但我实际测试是

中间一段是主动关闭websocket。
关闭后cpu占用5-6%,打开websocket17-18%(打开后,没发送,接收啥消息,就只有心跳包)

直接3倍开销。

测试版本3.3.2

看了官方用的libwebsocket.h是2.4.2版本。
当前最新都到4.3版本了。
是不是c库有什么bug

因为android平台上兼容性问题我们没有做版本升级, 实际上有过尝试.

你测试是只测native库(完全无js调用)还是依然从js调用及接收回调?

我从JS调用和接收引擎的
这有什么不一样

安卓已经修复了,将在 3.5 发布 https://github.com/cocos/cocos-engine/pull/10384
iOS 仍在跟进中,目前单独测试 SocketRocket 和 libwebsocket,跑 FB 的官方 demo 都有这个问题。我们会持续跟进。

反正就不是你们问题呗

感谢 Unity 用户的关心。
我只是披露一下现在的进展,让大家知道这帖没沉。

1赞

嗯嗯 :rofl: :rofl: :rofl:

我们进行了一系列的调研,比较了我们调用第三方库SocketRocket和其自身的demo的耗电量,以及其他websocket的实现。确认我们在调用SocketRocket时没有额外的电量损耗。CPU计算也是正常的。
cocos2.4.8


SocketRocket official demo

此外我们还对比了Unity和Unreal在Websocket功能上的ios耗电量,发现实际上ios本身网络通讯就是巨额电量开销。这一点可以参考 苹果官方文档https://developer.apple.com/library/archive/documentation/Performance/Conceptual/EnergyGuide-iOS/EnergyandNetworking.html

image

以及对于电量的记录https://developer.apple.com/library/archive/documentation/Performance/Conceptual/EnergyGuide-iOS/SignsofEnergyLeaks.html

Unity:


Unreal:

具体的调研可以在engine仓库issue里阅读。

3赞

鉴于目前的电量损耗是难以避免的,

  1. 我们推荐开发者降低网络通讯的频率,联机游戏的逻辑同步通常不需要 30fps,可以降低至 10fps。尽可能合并发送数据,将多个数据合并到一个包里发送。
  2. 优化数据包,因为实测数据包大小与网络硬件模块所消耗的电量是正比上升的,也推荐使用压缩数据来降低电量损耗。

感谢引擎组严谨的对比,已知晓。

大佬们 @genxium @jetmouse @ase7en 请关注上面调研结果

1赞