小弟最近在学习 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 CommandZi 2021-02-19 15:22:57 +08:00 你确定你的 url 能正常连接的吗 |
2 shenfu1991 OP @CommandZi 可以的,iOS 工程下用别的第三方库正常连接的 |
![]() | 3 Ariver 2021-02-19 16:34:50 +08:00 ![]() demoUrl 可以连接,你的 url 不行的话,我觉得还是考虑一下你的服务端吧。 至于你说的其他第三方库可以连接的话,他们连接的是其他 api,而不是 ws 吧? |
4 shenfu1991 OP @Ariver 我的这个 URL 其实也是别人的,不是我们的服务端提供的,不是 api,就是 ws 。 |
![]() | 5 CommandZi 2021-02-19 17:05:44 +08:00 ![]() 抓包看看吧,我怀疑是 tls 的原因 |
![]() | 6 dianqk 2021-02-19 18:41:25 +08:00 |
![]() | 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 |
8 shenfu1991 OP @DianQK #7 ,这域名确实被墙的,iOS 模拟器正常运行的,我之前开全局代理好像好像不行啊,我还在地铁,待我回家后确认后定会送上红包,感谢兄弟。 |
![]() | 9 dianqk 2021-02-19 20:44:32 +08:00 |
10 shenfu1991 OP ![]() @DianQK 刚回到家,抱歉。大佬能否说一下你那边的环境,看你的 IDE 好像不是 XCode ?我用 XCode 和终端都报同样的错误,我公司电脑没有报错,估计是 XCode 版本有问题,我更新在试试。红包先送上,请查收。 https://wenjian.xuanyuanhuangdi.org/[email protected] |
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"}} |
12 shenfu1991 OP @oxromantic 感谢热心帮助,不过红包只有一个,已经发给楼上了。 |
![]() | 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 代理 |
![]() | 14 dianqk 2021-02-20 04:30:23 +08:00 via iPhone @shenfu1991 截图 address already in use (或许是终端你在跑一个,Xcode 再跑端口占用直接 报 crash 了 XD |