由于路由,导轨中的Websocket无法正常工作

时间:2014-06-28 08:53:32

标签: ruby ruby-on-rails-4 websocket routes

我使用websocket在rails中创建web应用程序。我在routes.rb

中创建了以下内容
  

get '/:username' => 'users#profile', as:"profile"

在此之后,我在Gemfile中添加了以下内容

  

gem 'websocket-rails'

然后我在application.js

中添加以下内容
  

var dispatcher = new WebSocketRails('localhost:3000/websocket');
channel = dispatcher.subscribe('articles');
channel.bind('new', function(article) {
  console.log('a new article about '+article.id+' arrived!');
})

问题是

  

localhost:3000 / websocket =====>运行profile_path(获取'/:用户名'=>'用户#个人资料',如:“个人资料”)

如何解决我的websocket问题而不删除{ get '/:username' => 'users#profile', as:"profile" } ..?

我是使用网络套接字开发rails的新用户。

1 个答案:

答案 0 :(得分:1)

我使用路由约束修复了这个问题:

get '/:hash', to: 'conversations#show', constraints: {hash: /((?!websocket).)*/}

除非:hash不包含字符串' websocket'

,否则该路线将无效

我确定那里有更好的正则表达式,如果我的哈希随机包含字符串" websocket"它会失败。

但是,这解决了我在开发中遇到的问题。