小弟最近在学习 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 1
demoUrl 可以连接,你的 url 不行的话,我觉得还是考虑一下你的服务端吧。
至于你说的其他第三方库可以连接的话,他们连接的是其他 api,而不是 ws 吧? |
4
shenfu1991 OP @Ariver 我的这个 URL 其实也是别人的,不是我们的服务端提供的,不是 api,就是 ws 。
|
5
CommandZi 2021-02-19 17:05:44 +08:00 1
抓包看看吧,我怀疑是 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
|