shenfu1991
V2EX  ›  Apple

求大佬指教, Swift 服务端 vapor4.0 websocket client 问题

  •  
  •   shenfu1991 · Feb 19, 2021 · 2826 views
    This topic created in 1938 days ago, the information mentioned may be changed or developed.

    小弟最近在学习 swift 服务端框架 vapor4.0,想开发个简单的 app,在 websocket client 遇到了问题。话说这里的文档真是一言难尽。。

    在连接到服务器时,官方给的 demo URL 能够正常连接,但是当我换成别的 URL 的时候总是报连接超时错误。

    connectTimeout(NIO.TimeAmount(nanoseconds: 10000000000))
    

    Google 搜索好几天也没解决,github 上的 issue 也没看到类似的问题。

    源码:

    import Vapor
    
    // configures your application
    public func configure(_ app: Application) throws {
        try webs(app)
        try routes(app)
    }
    
    private func webs(_ app: Application) throws {
        
    // 相关文档   https://docs.vapor.codes/4.0/websockets/
        
    //    let url = "ws://echo.websocket.org"   //此 url 正常接收
        let url = "wss://fstream.binance.com/stream?streams=btcusdt@aggTrade/btcusdt@kline_15m/btcusdt@bookTicker/" //此 URL 总是报超时
        
        WebSocket.connect(to: url, on: app.eventLoopGroup) { (ws) in
            print("CONNECTED!")
            ws.onText { _, text in
                print("Received text: \(text)")
            }
    
            ws.onBinary { _, bin in
                print("Received binary message: \(bin)")
            }
            ws.send("Sup!")
            ws.send([1,2,3,4,5])
      }.flatMapErrorThrowing { (error) in
           debugPrint("error=\(error)")
      }
       
    }
    

    项目源码: https://wenjian.xuanyuanhuangdi.org/websocket.zip

    相关文档: https://docs.vapor.codes/4.0/websockets/

    希望大佬指教!也可以红包求助,万分感激。

    Supplement 1  ·  Feb 19, 2021
    有没有大佬帮忙解决😂,200 红包表示感谢。
    Supplement 2  ·  Feb 20, 2021
    基本上可以确认为 Xcode 或者网络问题,家里联通无论开全局代理都会崩溃,在 Ubuntu18.04 上成功运行,再次感谢各

    位大佬!
    14 replies    2021-02-20 04:30:23 +08:00
    CommandZi
        1
    CommandZi  
       Feb 19, 2021
    你确定你的 url 能正常连接的吗
    shenfu1991
        2
    shenfu1991  
    OP
       Feb 19, 2021
    @CommandZi 可以的,iOS 工程下用别的第三方库正常连接的
    Ariver
        3
    Ariver  
       Feb 19, 2021   ❤️ 1
    demoUrl 可以连接,你的 url 不行的话,我觉得还是考虑一下你的服务端吧。
    至于你说的其他第三方库可以连接的话,他们连接的是其他 api,而不是 ws 吧?
    shenfu1991
        4
    shenfu1991  
    OP
       Feb 19, 2021
    @Ariver 我的这个 URL 其实也是别人的,不是我们的服务端提供的,不是 api,就是 ws 。
    CommandZi
        5
    CommandZi  
       Feb 19, 2021   ❤️ 1
    抓包看看吧,我怀疑是 tls 的原因
    dianqk
        6
    dianqk  
       Feb 19, 2021
    没能复现:
    https://sm.ms/image/TdfupmWO6FiHg4a

    使用的 Docker 环境吗?(那祝楼主好运
    dianqk
        7
    dianqk  
       Feb 19, 2021
    啊。。。== 貌似是被墙了
    !---Digital Currency Exchange(CRYPTO)---
    ||aex.com
    ||allcoin.com
    ||adcex.com
    ||bcex.ca
    ||bibox.com
    ||big.one
    ||binance.com 域名这呢


    撸了个 B 站的 let url = "wss://ks-live-dmcmt-sh2-pm-03.chat.bilibili.com/sub"
    楼主可以试试这个

    == 不知道这个答复值不值 200
    shenfu1991
        8
    shenfu1991  
    OP
       Feb 19, 2021 via iPhone
    @DianQK #7 😂,这域名确实被墙的,iOS 模拟器正常运行的,我之前开全局代理好像好像不行啊,我还在地铁,待我回家后确认后定会送上红包🧧,感谢兄弟。
    dianqk
        9
    dianqk  
       Feb 19, 2021
    @shenfu1991 举手之劳,楼主愿送个红包奖励那真是太欣慰了

    https://sm.ms/image/yFQjReEO9GCJLHS
    shenfu1991
        10
    shenfu1991  
    OP
       Feb 19, 2021   ❤️ 1
    @DianQK 刚回到家,抱歉。大佬能否说一下你那边的环境,看你的 IDE 好像不是 XCode ?我用 XCode 和终端都报同样的错误,我公司电脑没有报错,估计是 XCode 版本有问题,我更新在试试。红包先送上,请查收。

    https://wenjian.xuanyuanhuangdi.org/[email protected]
    oxromantic
        11
    oxromantic  
       Feb 19, 2021
    测了下,首先要翻墙,其次 dns 有讲究,譬如不能用 114.114.114.114 的,测试了 223.5.5.5 是可以解析到正确节点

    [ NOTICE ] Server starting on http://127.0.0.1:8080
    CONNECTED!
    Received text: {"id": null, "error": {"code": 3, "msg": "Invalid json"}}
    shenfu1991
        12
    shenfu1991  
    OP
       Feb 20, 2021
    @oxromantic 感谢热心帮助,不过红包只有一个,已经发给楼上了。
    dianqk
        13
    dianqk  
       Feb 20, 2021 via iPhone
    @shenfu1991 收到🧧红包,感激

    bilibili 的 wss 也不通吗?
    我用的 VSCode (跑的时候还是直接终端执行一个 swift run Run

    我的 Xcode 版本 12.3 ( Swift 5.3

    (楼主不如考虑考虑来个 Surge...走个 tun 全 app 代理
    dianqk
        14
    dianqk  
       Feb 20, 2021 via iPhone
    @shenfu1991 截图 address already in use (或许是终端你在跑一个,Xcode 再跑端口占用直接 报 crash 了 XD
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5455 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 03:29 · PVG 11:29 · LAX 20:29 · JFK 23:29
    ♥ Do have faith in what you're doing.