2015-02-06 6 views
0

Я развернул приложение в режиме спуска, и я хочу реализовать приложение для чата с помощью сетевых сокетов, поэтому я использовал faye. Он работает на локальном уровне, но я получаю ошибку установления связи на сервере при развертывании в openshift. Это мой config.ru файл:Openshift: Ошибка при вводе WebSocket с помощью faye

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> 

Я реферировал к этому эпизоду railscast от Райана Бейтса: 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

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

Вероятно, это не началась на порт 8443, как следует, что делать.

+0

не используйте 'https' вместо этого использовать' wss', как упомянутое ниже в сообщении Corey – ImranNaqvi

ответ

3

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

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

да, это работает - @shobhit shukla должен отметить это как ответ – ImranNaqvi