Openshift:使用faye在WebSocket握手期间获取错误

时间:2015-02-06 07:22:52

标签: ruby-on-rails-4 websocket openshift ruby-2.0 faye

我在openshift上部署了一个应用程序,我想使用网络套接字实现聊天应用程序,所以我使用了faye。它正在本地工作但我在部署到openshift时在服务器上遇到握手错误。 这是我的config.ru文件:

require ::File.expand_path('../config/environment',  __FILE__)
require 'faye'
use Faye::RackAdapter, :mount => '/faye', :timeout => 25
run Rails.application

当我尝试运行https://myapp.rhcloud.com/faye.js时,它正常运行,我的应用功能也正常运行。但是我收到了这个错误:

WebSocket connection to 'wss://friendsbook-cisinlabs.rhcloud.com/faye' failed

的application.js

$(function(){
  var faye = new Faye.Client('https://myapp.rhcloud.com/faye');
  faye.subscribe("/messages/new", function(data) {
    eval(data);
  });
});

application.html.erb

  <%= javascript_include_tag '//myapp.rhcloud.com/faye.js' %>

message_helper.rb

def broadcast(channel, &block)
  message = {:channel => channel, :data => capture(&block)}
  uri = URI.parse("https://myapp.rhcloud.com/faye")
  Net::HTTP.post_form( uri, :message => message.to_json )
end

讯息/ index.html.erb

<ul id="chat">
  <%= render @messages %>
</ul>

<%= form_for Message.new, :remote => true do |f| %>
  <%= f.text_field :content %>
  <%= f.submit "Send" %>
<% end %>

讯息/ create.js.erb

<% broadcast "/messages/new" do %>
  $("#chat").append("<%= escape_javascript render(@message) %>");
<% end %>
$("#new_message")[0].reset();

讯息/ _message.html.erb

<li>
  <span class="created_at"><%= message.created_at.strftime("%H:%M") %></span>
  <%= message.content %>
</li>

我对Ryan Bates的这个轨道播放节目进行了评论: http://railscasts.com/episodes/260-messaging-with-faye

此外,我提到了很多其他链接,但没有任何帮助。

修改

我在 .openshift / action_hooks / post_start_ruby

中添加了此代码

nohup bundle exec rackup config.ru -s thin -E production -o $OPENSHIFT_INTERNAL_IP -p 8443 > $OPENSHIFT_HOMEDIR/diy-0.1/logs/server.log 2>&1 &

现在我收到错误:

ReferenceError: Faye is not defined

这就是我在 application.js

中定义faye的方式

var faye = new Faye.Client('https://friendsbook-cisinlabs.rhcloud.com:8443/faye

可能它没有开始使用端口8443,应该怎么做。

1 个答案:

答案 0 :(得分:3)

如果要使用wss进行连接,则需要使用端口8443,而不是端口443(这是默认设置)

wss://friendsbook-cisinlabs.rhcloud.com:8443/faye