2011-08-16 9 views
0

私はここでpusherappを使用しようとしていますが、クロムのコンソールは "接続が確立される前にWebSocketが閉じられています。私のJSは以下の通りですが、何が問題なのかについてのアイデアはありますか?Pusherapp/Websocket not connecting

<script type='text/javascript'> 
    $(document).ready(function(){ 
    var pusher_key = "<%= Pusher.key %>"; 
    var pusher_channel = "thirsty-<%= Rails.env %>"; 
    var pusher = new Pusher(pusher_key, pusher_channel); 
    pusher.bind('push_comment', function(content) { 
    comment_html = '<li><p>' + content + '</p></li>' 
    $(comment_html).prependTo('#comments'); 
    }); 
}); 
</script> 
+0

console.logの "pusher_key"と "pusher_channel"プロパティが正しいかどうかを確認します。 – Shakakai

+0

彼らは両方とも正しい値を示しています –

答えて

0

質問は次のエラーの理由を求めている:

WebSocket is closed before the connection is established.

これは実際に試みがで(WebSocketの接続を閉じるようになされているときに、ブラウザによってログに記録される一般的なWebSocketのエラーですwebSocketInstance.close()を呼び出してください)。

エラーはPusher JavaScriptライブラリによってトリガーされ、接続を終了しようとしますが、ネットワークやブラウザの状態が悪い(オンライン/オフラインレポートなど)ために発生します。 Pusher JavaScriptライブラリのすべてのケース(私が知っている)は、それらの接続が解決されるまで(例えば、インターネット接続が復元されるまで)接続を再試行します。

詳細については、次の回答例:

What does "WebSocket is closed before the connection is established" mean?

上記コード上の点のカップル:

  • Pusherコンストラクタは、アプリケーションキーである第1のパラメータを有します。 2番目のパラメータは、キー値オプションのマップです。したがって、2番目のパラメータとしてチャンネル名を渡すべきではありません。 Pusher constructor here
  • pusher.bindコールは実際は廃止されました(ドキュメントは今更新されています)。チャンネルイベントの場合は、channel.bindを使用してチャンネルに直接バインドし、接続イベントの場合はPusher.connectionオブジェクトにバインドする必要があります。
+0

この回答は悲しいことに、多くの文脈がないため使用できません。 – Obie

+1

@Obieうまくいけば、アップデートによって物事が明確になり、答えがより有用になります。 – leggetter