CloudFlare 和 socket.io

Posted

技术标签:

【中文标题】CloudFlare 和 socket.io【英文标题】:CloudFlare and socket.io 【发布时间】:2016-10-27 10:37:33 【问题描述】:

我正在使用 CloudFlare 来实现 REST API。我需要添加一些通过 Node.JS 上的 socket.io 实现的通知。 当 socket.io 使用实时连接来保持客户端更新时,它会工作,因为连接是在服务器-客户端之间建立的,但是当 socket.io 进行轮询时会发生什么? CloudFlare 是否总是为每个客户端使用相同的服务器?

【问题讨论】:

【参考方案1】:

WebSockets 由 IETF 在 RFC 6455 中标准化,这使您可以避免轮询行为,而是直接维护从服务器到客户端的双向连接。

虽然您现有的堆栈(Node.js、Socket.io 和 CloudFlare)支持轮询行为; Socket.io 可以使用 WebSockets 和CloudFlare now supports WebSockets!

WebSockets 不使用传统的轮询,而是充当全双工通信协议。可能时 Socket.io 将 seek to use WebSockets when it can 但在可能时回退到轮询。

那么你需要记住什么?使用 WebSocket 时,请务必使用 CloudFlare 可接受的端口。

For requests made via HTTP/WS:

80
8080
8880
2052
2082
2086
2095

For requests made via HTTPS/WSS:

443
2053
2083
2087
2096
8443 

using CloudFlare with WebSockets 有一个常见问题解答。

【讨论】:

以上是关于CloudFlare 和 socket.io的主要内容,如果未能解决你的问题,请参考以下文章

CloudFlare 和 socket.io

使用 CloudFlare、Heroku 和 RoR 时如何设置真实 IP 地址?

nginx、aws 和 cloudflare 的 cors 问题

使用 Google Domains 和 Cloudflare 时转发电子邮件 [关闭]

Cloudflare 如何区分 Selenium 和 Requests 流量?

Cloudflare 为 Cloudflare 页面去除自定义域上的标头