使用faye ruby服务器向订阅响应添加自定义字段



我正在尝试使用faye(该发行版中包含的聊天示例)编写一个概念验证聊天应用程序。

在我的概念验证中,我想在客户端订阅频道时发送聊天频道的完整历史记录。我目前的想法是使用订阅响应消息中的自定义字段来实现这一点。

在检查bayeux协议定义后,似乎允许在订阅响应消息中使用'ext'字段。

但是我无法使用服务器扩展向这个ext字段添加任何内容。

class ServerLog
  def incoming(message, callback)
    puts " msg: #{message}"
    unless message['channel'] == '/meta/subscribe'
      return callback.call(message)
    end
    # the following line changes absolutely nothing
    message['ext'] = 'foo'
    callback.call(message)
  end
end
App.add_extension(ServerLog.new)

虽然ext字段的设置不会使服务器崩溃,但它对订阅响应消息绝对没有影响。我甚至检查过使用Wireshark(只是为了确保js客户端不会忽略一些字段)。

我的错误是使用了'incoming'方法,而不是'outgoing'方法。

class ServerLog
  def outgoing(message, callback)
    puts " out: #{message}#"
    unless message['channel'] == '/meta/subscribe'
      return callback.call(message)
    end
    if message['subscription'] == '/chat/specialchannel'
      message['ext'] ||= {}
      message['ext']['specialattribute'] = 'special value'
    end
    callback.call(message)
  end
end
App.add_extension(ServerLog.new)

本例将在订阅响应消息的ext字段中添加specialattribute(如果通道为/chat/specialchannel)。

相关内容

  • 没有找到相关文章

最新更新