Faye
faye.jcoglan.com
What it is
Faye is a publish-subscribe messaging system that uses the Bayeux protocol. It provides message servers for Node.js and Ruby, plus clients for servers and major web browsers. Browser clients rely on a Faye server to relay messages; they can retry after a lost connection and redeliver dropped messages. Transport adapters cover WebSocket, HTTP long-polling, Cross Origin Resource Sharing, and JSON-P callback-polling. Server and client extensions can intercept or modify messages, including to add subscription authentication. The monitoring API reports handshakes, subscriptions, unsubscriptions, publishes, and disconnections. Faye runs on Linux, macOS, and Windows, and can be self-hosted. Its default in-process engine cannot span multiple front-end web servers, but Redis and Couchbase engines are documented for distributed deployments. Faye is free and open source under the Apache 2.0 license; the listed plan is free. Install the Node.js server through npm or the Ruby server through RubyGems.
Spec sheet
- What it does
- Faye is a publish-subscribe messaging system based on the Bayeux protocol.Read 15 Oct 2026 · faye.jcoglan.com
- Purpose
- Faye is a publish-subscribe messaging system based on the Bayeux protocol.Read 4 Oct 2026 · faye.jcoglan.com
- Integrations
- The download instructions provide installation through npm for Node.js and RubyGems for Ruby.Read 4 Oct 2026 · faye.jcoglan.com
- Security
- Faye allows cross-domain access and unrestricted publishing and subscribing by default, so the documentation advises adding application-appropriate restrictions.Read 4 Oct 2026 · faye.jcoglan.com
- License
- Faye is open-source software released under the Apache 2.0 license.Read 15 Oct 2026 · faye.jcoglan.com
- Maker
- The site credits James Coglan as Faye’s maker.Read 4 Oct 2026 · faye.jcoglan.com
- Additional backends
- The engine documentation lists separate faye-redis, faye-redis-sharded and faye-couchbase backends.Read 15 Oct 2026 · faye.jcoglan.com
- Browser connection model
- Browser documentation recommends one Faye client per target server because browsers limit connections per host.Read 15 Oct 2026 · faye.jcoglan.com
- Browser requirement
- Browser clients require a Faye server to handle message delivery between clients.Read 4 Oct 2026 · faye.jcoglan.com
- Channel subscriptions
- Subscriptions support wildcard channel patterns and return cancellable subscription promises.Read 15 Oct 2026 · faye.jcoglan.com
- Client recovery
- The browser client periodically retries after a lost connection and can redeliver dropped messages.Read 4 Oct 2026 · faye.jcoglan.com
- Client support
- Clients can run on servers and in major web browsers.Read 15 Oct 2026 · faye.jcoglan.com
- Clustering tradeoff
- Redis-backed clustering enables scaling across front ends but adds external I/O and is slower than in-process storage.Read 15 Oct 2026 · faye.jcoglan.com
- Credential handling
- The security guide says server extensions should remove authorization credentials before messages are forwarded to subscribers.Read 15 Oct 2026 · faye.jcoglan.com
- Cross-domain support
- Faye clients and servers support cross-domain communication without extra configuration.Read 15 Oct 2026 · faye.jcoglan.com
- Extensibility
- User-written client and server extensions can intercept, modify or reject messages.Read 15 Oct 2026 · faye.jcoglan.com
- Extensions
- Server and client extensions can intercept and modify incoming or outgoing messages, including to implement subscription authentication.Read 4 Oct 2026 · faye.jcoglan.com
- Independent activity limit
- Ruby Toolbox rates faye-websocket 0.88 and flags low commit activity and no release in over a year.Read 15 Oct 2026 · ruby-toolbox.com
- Independent maintenance limit
- Snyk's analyzed snapshot labels maintenance inactive, with no commits in six months, 19 open issues, four open pull requests and one maintainer.Read 15 Oct 2026 · security.snyk.io
- Independent popularity
- Snyk reports about 1.7 million weekly npm downloads and roughly 4,385 GitHub stars for Faye.Read 15 Oct 2026 · security.snyk.io
- Independent repository scale
- GitHub shows the Faye organization repository with about 4.4k stars and 367 forks, plus separate Ruby and Node WebSocket repositories.Read 15 Oct 2026 · github.com
- Independent security status
- Snyk reports no known security issues for the package version it analyzed, while recording four historical vulnerabilities in older versions.Read 15 Oct 2026 · security.snyk.io
- Latest release
- The download page lists version 1.4.3, released 27 September 2026.Read 15 Oct 2026 · faye.jcoglan.com
- License and release
- The site lists version 1.4.2, released 14 September 2026, under the Apache 2.0 license.Read 4 Oct 2026 · faye.jcoglan.com
- Limit: complexity and state
- The same Stack Overflow discussion describes Faye as more complex than Juggernaut and notes that its then-current state was held in memory.Read 15 Oct 2026 · stackoverflow.com
- Limit: historical TLS vulnerability
- A Singapore government SingCERT bulletin says older faye-websocket and Faye Ruby clients lacked TLS certificate validation, with fixes released in faye-websocket 0.11.0 and Faye 1.4.0.Read 15 Oct 2026 · isomer-user-content.by.gov.sg
- Limit: scope
- A separate Stack Overflow discussion characterizes Faye as a web pub-sub layer rather than a general Redis-style storage system.Read 15 Oct 2026 · stackoverflow.com
- Messaging transports
- The adapters support WebSocket, HTTP long-polling, Cross Origin Resource Sharing, and JSON-P callback-polling.Read 4 Oct 2026 · faye.jcoglan.com
- Monitoring
- The monitoring API can report client handshakes, subscriptions, unsubscriptions, publishes, and disconnections.Read 4 Oct 2026 · faye.jcoglan.com
- Monitoring caveat
- In multi-process Redis deployments, monitoring events fire only in the process handling each event, so local subscriber counts can be inaccurate.Read 15 Oct 2026 · faye.jcoglan.com
- News: 1.4.2 security
- The 1.4.2 changelog entry says it mitigates a denial-of-service and potential message-stealing attack against the Node server.Read 15 Oct 2026 · github.com
- News: 1.4.3
- The 1.4.3 changelog entry fixes an unhandled rejection when a transport probe fails.Read 15 Oct 2026 · github.com
- Node configuration
- NodeAdapter accepts mount, timeout, engine and ping settings and attaches to an existing HTTP server.Read 15 Oct 2026 · faye.jcoglan.com
- Node installation
- The official installation command for Node.js and browser packaging is npm install faye.Read 15 Oct 2026 · faye.jcoglan.com
- Notable browser limit
- The documentation advises creating one client per target server because browsers impose per-host connection limits.Read 4 Oct 2026 · faye.jcoglan.com
- Praise: extensibility
- A Stack Overflow answer praises Faye's server and client extensions, wildcard routes and automatic reconnection for broad browser and phone compatibility.Read 15 Oct 2026 · stackoverflow.com
- Publishing
- Clients publish arbitrary JSON-serializable objects and receive confirmation that the server accepted and routed them.Read 15 Oct 2026 · faye.jcoglan.com
- Reconnect behavior
- The browser client can retry connections and redeliver messages after network errors.Read 15 Oct 2026 · faye.jcoglan.com
- Ruby installation
- The official Ruby installation command is gem install faye.Read 15 Oct 2026 · faye.jcoglan.com
- Ruby runtime
- The Ruby server runs on MRI and JRuby and the documentation requires at least Ruby 1.9.Read 15 Oct 2026 · faye.jcoglan.com
- RubyGems ecosystem
- RubyGems lists faye-websocket 0.12.0, 48 versions and 46,352,782 total downloads.Read 15 Oct 2026 · rubygems.org
- RubyGems license
- RubyGems identifies faye-websocket as Apache-2.0 and names James Coglan as its author.Read 15 Oct 2026 · rubygems.org
- Scaling
- The default in-process engine cannot run one Faye service across multiple front-end web servers; separate Redis and Couchbase engines are documented for distributed deployments.Read 4 Oct 2026 · faye.jcoglan.com
- Security defaults
- A new Faye server is cross-domain accessible and imposes no subscription or publication restrictions until extensions add them.Read 15 Oct 2026 · faye.jcoglan.com
- Server and clients
- It provides message servers for Node.js and Ruby and clients for servers and major web browsers.Read 4 Oct 2026 · faye.jcoglan.com
- Server support
- It provides message servers for Node.js and Ruby.Read 15 Oct 2026 · faye.jcoglan.com
- Storage engines
- The default memory engine keeps state in one process, while the Redis engine supports multiple server instances.Read 15 Oct 2026 · faye.jcoglan.com
- Transport protocols
- Adapters support WebSocket, HTTP long-polling, CORS and JSON-P callback-polling.Read 15 Oct 2026 · faye.jcoglan.com
- Transport security
- The security guide advises using HTTPS or WSS and securing Node, Thin or a fronting TLS terminator.Read 15 Oct 2026 · faye.jcoglan.com
- WebSocket extensions
- Node and Ruby adapters accept extensions compatible with the websocket-extensions framework, including permessage-deflate.Read 15 Oct 2026 · faye.jcoglan.com
Plans and prices
Strong points and limits
Strong points
- Message servers for Node.js and Ruby
- Browser clients can retry and redeliver dropped messages
- Multiple transport adapters are supported
- Extensions can add subscription authentication
- Free under the Apache 2.0 license
Limits
- Browser clients require a Faye server
- Default engine cannot span front-end servers
- Cross-domain access and unrestricted messaging are defaults
- Browsers impose per-host connection limits
Who it suits
Faye suits developers building Bayeux-based messaging between servers and browser clients. Teams needing to distribute service across multiple front-end servers can use the documented Redis or Couchbase engines.
Verdict
Faye provides a free messaging system with server and browser clients, several transports, and monitoring. Plan for connection limits and add application-appropriate access restrictions; the security guide also advises HTTPS.
Where Specifiction places it
- WebSocket Tools#3 of 558.8
- Message Broker Software#6 of 398.7