Rails アプリへのリアルタイム メッセージングに Pusher を使用する方法について、いくつかのチュートリアル (すべて非常によく似ています) に従いました。
私がしようとしていること:
// Javascript on my clientside receiving html page
$(function(){
var pusher = new Pusher('xxxx-mykey-xxxx');
var myChannel = pusher.subscribe('survey-channel');
myChannel.bind('data-changed', function(data){
alert(data);
});
// Some useful debug msgs
pusher.connection.bind('connecting', function() {
alert('Connecting to Pusher...');
});
pusher.connection.bind('connected', function() {
alert('Connected to Pusher!');
});
pusher.connection.bind('failed', function() {
alert('Connection to Pusher failed :(');
});
myChannel.bind('subscription_error', function(status) {
alert('Pusher subscription_error');
});
});
そして、Rails アプリのコントローラー メソッド内でこれを呼び出します。
Pusher['survey-channel'].trigger('data-changed', "Busy creating new Call")
render :text => "Pusher sent"
「Pusher sent」をレンダリングすることを除いて、メソッドが呼び出されても何も起こりません。
Chrome 開発者ツールのコンソールでは、次のように表示されます。
(x) Uncaught TypeError: Cannot call method 'bind' of undefined calls:31
(3) WebSocket is closed before the connection is established. :3000:1
何が欠けている可能性がありますか?助けてください!
編集#1
このコードをクライアントに追加しました。
Pusher.log = function(message) {
if (window.console && window.console.log) window.console.log(message);
};
そして、コンソールに次のように記録しました:
Pusher : Connecting : ws://ws.pusherapp.com:80/app/e5d0f1ae2cab03dc3aa9?client=js&version=1.8.6 calls:44
Pusher : Event recd (event,data) : pusher:connection_established : {"socket_id":"14299.674628"} calls:44
Pusher : Event sent (channel,event,data) : : pusher:subscribe : {"channel":"survey-channel"} calls:44
編集#2
「メッセージ」を送信するたびに、 Event Creatorで送信しても、 Pusher Debug Consoleに表示されません。しかし、本当に奇妙なのは、[統計]ページで、メッセージ レートと接続数が 0 より大きいことを示していることです (例: 2 つの接続など)。
編集 #3
Pusher のテスト ページをテストしました。(http://test.pusher.com/1.12) 完全に接続しますが、「Say Hello」機能は何もしません。これは、ブラウザの設定にあるのではないかと思います。
現在、Win7 PC で最新バージョンの Chrome を実行しています。