zhongwuzw / WebBrowser

iOS浏览器 Web Browser for iOS
https://github.com/zhongwuzw/WebBrowser
MIT License
375 stars 92 forks source link

一个网址本地缓存的问题。 #14

Closed CXTretar closed 6 years ago

CXTretar commented 6 years ago

测试Demo时发现,假如第一次安装后未打开任何新网址,在下次启动Demo时,会出现首页加载白屏,发现加载的网址是http://localhost:0/about/sessionrestore?history={"history":["about:homepage"],"currentPage":0} ; 作者大大有时间可以说明一下用 GCDWebServer 缓存网页浏览记录的原理么?

CXTretar commented 6 years ago

将server 的端口配置方法

- (BOOL)start{
    if (!_server.isRunning) {
        [self.server startWithOptions:@{
                                        GCDWebServerOption_Port: @6800,
                                        GCDWebServerOption_BindToLocalhost: @YES,GCDWebServerOption_AutomaticallySuspendInBackground: @YES
                                        } error:NULL];
    }

    return _server.isRunning;
}

改为

- (BOOL)start{
    if (!_server.isRunning) {
       [self.server startWithPort:6800 bonjourName:nil];
    }    
    return _server.isRunning;
}

测试是可以正确设置端口修复Bug.

zhongwuzw commented 6 years ago

@CXTretar 你好,这个bug是必现的么?请提供iOS版本、设备等,我定位一下。

CXTretar commented 6 years ago

@zhongwuzw 应该是必现的,因为我自己的项目中使用同样的方式start,也出现问题,我重新下载master测试确定一下,测试用的模拟器iPhone 6 iOS 11.2. 真机 iPhone 5s iOS 10.2 。

zhongwuzw commented 6 years ago

@CXTretar ,我这边没法复现,根据你提供的URL,端口号显示为0,也就是_options赋值的时候6800没赋值上,你这边能在这打个断点调试一下么?

// GCDWebServer.m
- (BOOL)_start:(NSError**)error {
  GWS_DCHECK(_source4 == NULL);

  NSUInteger port = [_GetOption(_options, GCDWebServerOption_Port, @0) unsignedIntegerValue];
CXTretar commented 6 years ago

@zhongwuzw 重新下载新的项目运行是没有问题的,但是早上我测试了很多遍一直有这个问题,这个会跟网络环境有关系?

CXTretar commented 6 years ago

image 这个错误是怎么造成的

CXTretar commented 6 years ago

无法重现了,应该是模拟器出的异常。