关于 websocket 协议,使用 cdn 加速的情况有问。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
different
V2EX    Linux

关于 websocket 协议,使用 cdn 加速的情况有问。

  •  
  •   different 2019-12-28 14:18:14 +08:00 10759 次点击
    这是一个创建于 2166 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景:使用 C++实现的消息传输的客户端、服务端软件

    了解到 cloudflare 的 cdn 可以加速 websocket. [暂且不讨论有没有加不加“速”效果的问题]

    我写的客户端和服务端是基于 websocket 协议的 [直接连接可用] ,如果使用 cdn 加速的话,我应该是在客户端当中把 cdn 的地址作为服务端地址吧?

    大体在客户端的实现步骤应该是: 1.解析域名得到 cdn 的 ip 地址,2.再通过 socket 连接 cdn 地址吧,3.然后发送 websocket 连接协议。 [此流程是我实际实现过程,不知道是否有误]

    可是在第 2 步,使用 socket 连接 cdn 地址的时候,报错: Resource temporarily unavailable

    补充:当时我就比较郁闷了,毕竟客户端、服务端是我自己写的,是不是我写的并不是非标准的 websocket 协议,才没法连接上,可是我都还没发送 websocket 协议请求头,在第 2 步就报错了。

    疑问:

    1.通过 socket 连接 cdn 地址为何报错 [尝试 ping cdn 地址,能够正常 ping 通]

    2.如果我通过 socket 连接 cdn 地址之后,之后发送的内容并不是标准,或者不遵循 websocket 协议,会被扔掉吗?

    第 1 条附言    2019-12-28 18:11:15 +08:00
    已经解决,由于自己使用的端口不是 80 导致的;

    cloudflare 可以转发 websocket 协议的内容,不管是不是 websocket 协议,貌似只能使用 80 端口(不知道是否为免费版的缘故)

    感谢各位!
    第 2 条附言    2019-12-28 18:19:51 +08:00
    Cloudflare 支持的 HTTP 端口:

    80
    8080
    8880
    2052
    2082
    2086
    2095
    Cloudflare 支持的 HTTPS 端口:

    443
    2053
    2083
    2087
    2096
    8443

    websocket 端口自测(目前已知 80 端口可用)
    9 条回复    2019-12-28 19:29:05 +08:00
    codehz
        1
    codehz  
       2019-12-28 14:55:06 +08:00
    关于第一个问题,你可以试试用 curl 测试一下(别告诉我这玩意没实现 HTTP 服务器功能,直接裸 websocket
    然后除此之外,连接上还得注意以下问题:在 cloudflare 后台把 websocket 功能打开( network 那个选项卡找一下
    其次:发送升级请求的时候带上 Host 和 UA(或者去 cf 后台设置下防火墙等级,以及具体 UA 也可以在那里设置下白名单)
    Host 的必须的,不然 CF 不知道到底是哪个用户的网站,也没法请求了(
    different
        2
    different  
    OP
       2019-12-28 15:11:24 +08:00
    @codehz 感谢,直接裸 websocket 的,没有实现 http 服务器,其次,我在 socket 连接阶段都还没得成功,更不同说发送 host 之后的内容了。
    liuxingbaoyu
        3
    liuxingbaoyu  
       2019-12-28 16:34:25 +08:00
    要看看是 connect 失败还是在 send 以后出问题了
    而且也有可能是 CF 配置的有问题
    different
        4
    different  
    OP
       2019-12-28 16:40:33 +08:00
    @liuxingbaoyu 感谢,是 connect 失败,好像是端口只能是 80,我再仔细排查一下。
    different
        5
    different  
    OP
       2019-12-28 18:10:47 +08:00
    @codehz
    @liuxingbaoyu
    已经解决,由于自己使用的端口不是 80 导致的;
    cloudflare 可以转发 websocket 协议的内容,不管是不是 websocket 协议,貌似只能使用 80 端口(不知道是否为免费版的缘故)
    MeteorCat
        7
    MeteorCat  
       2019-12-28 18:18:43 +08:00 via Android
    前段时间我也这样,感谢楼主排雷
    different
        8
    different  
    OP
       2019-12-28 18:19:11 +08:00
    @shansing 感谢,改正一下:
    Cloudflare 支持的 HTTP 端口:

    80
    8080
    8880
    2052
    2082
    2086
    2095
    Cloudflare 支持的 HTTPS 端口:

    443
    2053
    2083
    2087
    2096
    8443

    websocket 端口自测
    mytsing520
        9
    mytsing520  
    PRO
       2019-12-28 19:29:05 +08:00
    并非所有节点 IP 地址均开放了上述端口,自测
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5047 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 01:18 PVG 09:18 LAX 17:18 JFK 20:18
    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