3.x websocket 安卓占用2倍cpu,高耗电解决方案

在论坛找了下2.x的方案,改了无效。继续对比
websocket-libwebsocket.cpp的源码。
发现3.X比2.X多了个WS_ENABLE_LIBUV

于是把

#if CC_PLATFORM == CC_PLATFORM_ANDROID
#define WS_ENABLE_LIBUV 1
#else
#define WS_ENABLE_LIBUV 0
#endif

改为

#if CC_PLATFORM == CC_PLATFORM_ANDROID
#define WS_ENABLE_LIBUV 0
#else
#define WS_ENABLE_LIBUV 0
#endif

在onSubThreadLoop方法 中
修改为

wsPolling = true;
lws_service(wsContext, 2);
std::this_thread::sleep_for(std::chrono::milliseconds(3));
wsPolling = false;

搞定!cpu下降一半。

总结:看来3.X ,cc官方自己都不用来做原生的。所有只实现了功能,或者功能残缺。
只是叫我们开发者的,冲啊,冲3.X

浪费时间1天排查定位高cpu问题

11赞

大佬牛皮。 :+1: :+1: :+1: :+1: :+1:

@panda @jare @nantas

拉个闸 :rofl:

快@官方来,

大佬牛逼zsbd

插个眼!!!

牛皮 :+1:

mark!

插眼随时TP

感谢反馈,之前 3.3 修复过,这么修改网络的实时性可能会略受影响,取决于项目需要。
我们会继续跟进这个问题。

1赞

纵使会有这小影响,相对于耗电高来说,那都是是小问题,慢那几十毫秒换来巨大的cpu提升,

2.4先给个优化文件吧大佬,ios的发热问题让我新内容不敢发,怕玩家喷

这点问题出的太多了 原来是4…

插眼插眼插眼插眼插眼,算是一种优化思路

战术性插眼。

原生问题是真的挺多了 我们项目都是躺了几个月的坑 现在不敢升级版本

大佬666

这位真的是大佬,膜拜,开源贡献者

我们使用 okhttp 替换了 libwebsockets,将在 3.5 发布
https://github.com/cocos/cocos-engine/pull/10384