求大佬指教, Swift 服务端 vapor4.0 websocket client 问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shenfu1991
V2EX    Apple

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

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

    小弟最近在学习 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     Solana     2661 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 03:15 PVG 11:15 LAX 20:15 JFK 23:15
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86