我正在尝试在 Torquebox 中为 Web 套接字实现用户身份验证,根据 Internet 上的所有内容,如果我在 stomp 服务器旁边运行 Web 应用程序,我应该能够从 stomplet 中访问 HTTP 会话,其中我是。
我的配置看起来像这样
web do
context '/'
host 'localhost'
end
stomp do
host 'localhost'
end
stomplet GlobalStomplet do
route '/live/socket'
end
我也尝试过评论网络和踩块,但没有任何改变。
基本上,套接字正在工作,我可以连接和订阅。在我的 stomplet 中,该on_subscribe
方法有一些调试行
Rails.logger.debug "SESSION = #{subscriber.session}"
Rails.logger.debug "SESSION 2 = #{subscriber.getSession.getAttributeNames}"
Rails.logger.debug "SOCKET SESSION = #{TorqueBox::Session::ServletStore.load_session_data(subscriber.getSession)}"
以及这些事情的任何其他组合,但在每种情况下,我都会得到一个空会话。唯一的例外是,当我显式加载会话时(如上面的最后一个调试行),我的会话包含一个会话 ID 和类似的东西TORQUEBOX_INITIAL_KEYS
,但会话 ID 不是 HTTP 会话,只是类似的东西session-1
,没有什么用处。
我在 rails 应用程序中有一个初始化程序,用于设置扭矩盒会话存储
MyApp::Application.config.session_store :torquebox_store, {
key: '_app_key'
}
我没有收到任何异常,所以我认为没有明显的问题,但我已经尝试了所有我能想到的方法,但仍然没有可以使用的会话。
我究竟做错了什么?
我正在使用 Torquebox 3.1.0、Rails 4 和 jRuby 1.7.11