CloudFlare 和 socket.io

CloudFlare and socket.io

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

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

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

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

那么你需要注意什么?使用 WebSockets 时一定要使用 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 的常见问题解答。