Openshift: ошибка при рукопожатии WebSocket с использованием 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

messages / 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 %>

messages / create.js.erb

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

messages / _message.html.erb

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

Я сослался на этот эпизод передачи от Райана Бейтса: 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

Вот как я определил faye в application.js

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

Возможно, он не запустился на порту 8443, как это сделать.


person shobhit shukla    schedule 06.02.2015    source источник
comment
не используйте https вместо этого используйте wss, как указано ниже в сообщении Кори   -  person ImranNaqvi    schedule 02.12.2015


Ответы (1)


Если вы хотите использовать wss для своего подключения, вам необходимо использовать порт 8443 вместо порта 443 (который используется по умолчанию).

wss://friendsbook-cisinlabs.rhcloud.com:8443/faye
person Community    schedule 06.02.2015
comment
да, это работает - @shobhit shukla должен отметить это как ответ - person ImranNaqvi; 02.12.2015