一、ruby 配置

1. rack 使用 puma 运行起来

项目下新建一个 faye.ru 文件, 配置 faye

require 'faye'
bayeux = Faye::RackAdapter.new(:mount => '/faye', :timeout => 25)
run bayeux

启一个 faye rack 服务

rackup config.ru -s puma -E production -p 9292

这是通过 puma 启起来的, 通过其他方式配置, 参见 ruby faye 的相关文档

2. 发布消息

使用 ruby 自带的 HTTP 请求

Net::HTTP.post_form(uri, message: message)

# uri: faye 服务启的地址
# message: json 格式(字符串), channel(发送数据的频道), data(发送的数据)

例如:

Net::HTTP.post_form(URI('http://127.0.0.1:9292/faye/events'), message: { channel: '/foo', data: '1223' }.to_json)

二、前端订阅

<!DOCTYPE HTML>
<html>
<head>
  <!- 引入 JQuery ->
  <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
  <!- 引入 faye js ->
  <script type="text/javascript" src="http://127.0.0.1:9292/faye/client.js"></script>
</head>
<body>
  <div>faye测试</div>
</body>
<script type="text/javascript">
  console.log(1111)

  // 启一个订阅
  $(function() {
    var client = new Faye.Client('http://127.0.0.1:9292/faye');

    client.subscribe('/foo', function(message) {
      console.log(222)
      console.log(message)
    });
  })
</script>
</html>

三、 faye 相关文档

  • faye 的官方文档, 这个有用
  • ruby faye 的相关文档, 在ruby环境里怎么运行起来
  • faye gem 的文档, 写了一堆看不懂的东西
  • faye的核心代码

四. 拓展

anycable , 和 faye 类似