支持与 Pusher 库兼容的 Open Pusher 实现
重要提示! Slanger 不应包含在您的 Gemfile 中。RubyGems 用作分发机制。如果将其包含在您的应用中,很可能会出现依赖冲突。针对与您的应用兼容性进行依赖更新的 PR 将被关闭。感谢您的阅读,欢迎使用 Slanger!
gem install slanger
redis-server &> /dev/null &
slanger --app_key 765ec374ae0a69f4ce44 --secret your-pusher-secretSlanger 是 Pusher 协议的独立服务器 Ruby 实现。 并不是专门为在 Rails 或 sinatra 应用程序中运行的,但它可以很容易地 作为 gem 安装。 Bundler 有多种用途,其中一个用于安装。
Slanger 是一个使用 Ruby 编写的 Pusher 协议的 开源 服务器实现。它旨在横向扩展到 N 个节点,并且对订阅者连接到哪个 Slanger 节点是无知的,即同一频道的订阅者不需要连接到同一个 Slanger 节点。多个 Slanger 节点可以在负载均衡器后运行,无需特殊配置。从本质上讲,它的设计非常容易扩展。
在给定的 Slanger 节点中,当第一个订阅者连接时,会使用 Redis 共享存在通道状态。当在 Slanger 节点中实例化存在通道时,它会向 Redis 查询该通道在系统中所有节点的全局状态,然后将该状态内部复制。之后,当订阅者连接或断开连接时,节点会向所有感兴趣的节点发布存在消息,即所有至少有一个感兴趣该给定通道的订阅者的节点。
Slanger 够聪明,能够判断新的频道订阅是否属于同一用户。在这种情况下,它不会向订阅者发送状态信息。这种情况通常发生在用户打开多个浏览器标签时。以一个由状态频道支持的聊天室为例,我们不希望"Barrington"在状态信息中出现 N 次。
暂无开放 Issues,或尚未同步最近议题。