ksvc/ksyhttpcache_ios

关于getProxyUrl 检测service isRunning 的问题

Closed this issue · 7 comments

获取代理播放地址代码

playerURL = [[KSYHTTPProxyService sharedInstance] getProxyUrl:playerURL newCache:NO];

log 如下

[22:22:38] -[MMBPlayerView reloadPlayerInfo:] [第139行] ======before get url :2018-02-06 14:23:54 +0000
2018-02-06 22:23:54:315 myAPP[1352:229557] Bonjour Service Published: domain(local.) type(_http._tcp.) name(10.2 7plus)
2018-02-06 22:23:56:270 myAPP[1352:229428] HTTPServer: Started HTTP server on port 8123
2018-02-06 22:23:56.273870+0800 myAPP[1352:229428] Started HTTP Server on port 8123

[22:22:38] -[MMBPlayerView reloadPlayerInfo:] [第145行] ======after get url :2018-02-06 14:23:56 +0000

新版本加入是否开启服务的监测,但是有时候获取播放地址要等很久,而且会卡住主线程

我是列表播放视频,所以getProxyUrl 调用会比较频繁

依赖库的版本

- CocoaAsyncSocket (7.6.2)
  - CocoaLumberjack (3.4.0):
    - CocoaLumberjack/Default (= 3.4.0)
    - CocoaLumberjack/Extensions (= 3.4.0)
  - CocoaLumberjack/Default (3.4.0)
  - CocoaLumberjack/Extensions (3.4.0):
    - CocoaLumberjack/Default

[22:58:53] -[MMBPlayerView reloadPlayerInfo:] [第135行] get play url begin:2018-02-06 14:59:47 +0000

[21:48:33] +[MMBUrlProtocol canInitWithRequest:] [第57行] =========protocol canInitWithRequest ==== http://127.0.0.1:8123/CheckAlive

[21:48:33] +[MMBUrlProtocol canInitWithRequest:] [第57行] =========protocol canInitWithRequest ==== http://127.0.0.1:8123/CheckAlive
2018-02-06 22:59:48:002 myAPP[1435:242132] HTTPServer: Started HTTP server on port 8123
2018-02-06 22:59:48.002674+0800 myAPP[1435:242132] Started HTTP Server on port 8123

[22:58:53] -[MMBPlayerView reloadPlayerInfo:] [第137行] get play url end:2018-02-06 14:59:48 +0000

看日志是在本地代理服务异常后,调用getProxyUrl时会耗时大概1秒多的时间
这这个调用中是检测是代理服务状态,如果异常后会重启服务,目前要保证这个函数返回后代理服务必须是正常状态,所以只能是同步方式处理,就会导致了耗时阻塞主线程
可以尝试一下在业务层通过异步的方式来调用getProxyUrl,当返回后在交给播放器处理,保证界面不卡,播放器开播可能会慢一点

会经常出现异常,有时候重启服务要2s,还有,异步获取在复用的时候会有问题。目前app 嵌入了移动加速SDK,开启加速后,会比较慢,在做相关沟通

可以排查一下是什么操作会导致本地代理服务异常吗,因为我自测的时候各种折腾,只有在长时间后台后会出问题,正常前台操作没出过异常

开启加速后用flex 查看网络请求情况如下图
img_0568
img_0567
img_0566
img_0565