我遵循了一些关于使用 Pusher 向我的 Rails 应用程序发送实时消息的教程(看起来都非常相似)。
我正在尝试什么:
// 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中。但真正奇怪的是,在Stats页面上,它指示Message Rate和Connections大于零,例如 2 个连接等。
编辑#3
我已经测试了 Pusher 的测试页面。(http://test.pusher.com/1.12) 连接完美,但“打个招呼”功能无济于事。这让我想到这可能是我的浏览器设置。
我目前在 Win7 PC 上运行最新版本的 Chrome。