V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shenfu1991
V2EX  ›  Apple

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

  •  
  •   shenfu1991 · 2021-02-19 15:01:56 +08:00 · 2097 次点击
    这是一个创建于 1369 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小弟最近在学习 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/

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

    第 1 条附言  ·  2021-02-19 17:49:15 +08:00
    有没有大佬帮忙解决😂,200 红包表示感谢。
    第 2 条附言  ·  2021-02-20 01:28:05 +08:00
    基本上可以确认为 Xcode 或者网络问题,家里联通无论开全局代理都会崩溃,在 Ubuntu18.04 上成功运行,再次感谢各

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

    使用的 Docker 环境吗?(那祝楼主好运
    DianQK
        7
    DianQK  
       2021-02-19 18:53:48 +08:00
    啊。。。== 貌似是被墙了
    !---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
       2021-02-19 20:04:19 +08:00 via iPhone
    @DianQK #7 😂,这域名确实被墙的,iOS 模拟器正常运行的,我之前开全局代理好像好像不行啊,我还在地铁,待我回家后确认后定会送上红包🧧,感谢兄弟。
    DianQK
        9
    DianQK  
       2021-02-19 20:44:32 +08:00
    @shenfu1991 举手之劳,楼主愿送个红包奖励那真是太欣慰了

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

    https://wenjian.xuanyuanhuangdi.org/[email protected]
    oxromantic
        11
    oxromantic  
       2021-02-19 23:12:40 +08:00
    测了下,首先要翻墙,其次 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
       2021-02-20 01:26:14 +08:00
    @oxromantic 感谢热心帮助,不过红包只有一个,已经发给楼上了。
    DianQK
        13
    DianQK  
       2021-02-20 04:26:10 +08:00 via iPhone
    @shenfu1991 收到🧧红包,感激

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

    我的 Xcode 版本 12.3 ( Swift 5.3

    (楼主不如考虑考虑来个 Surge...走个 tun 全 app 代理
    DianQK
        14
    DianQK  
       2021-02-20 04:30:23 +08:00 via iPhone
    @shenfu1991 截图 address already in use (或许是终端你在跑一个,Xcode 再跑端口占用直接 报 crash 了 XD
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5371 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:22 · PVG 09:22 · LAX 17:22 · JFK 20:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.