【发布时间】:2023-03-28 13:20:01
【问题描述】:
我遵循了一些关于使用 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
每当我发送“消息”时,它甚至不会出现在 Pusher Debug Console 中,即使我使用 Event Creator 发送它也是如此。但真正奇怪的是,在 Stats 页面上,它表明 Message Rate 和 Connections 大于零,例如2 个连接等。
编辑#3
我已经测试了 Pusher 的测试页面。 (http://test.pusher.com/1.12) 它完美连接,但“打个招呼”功能无济于事。这让我想到这可能是我的浏览器设置。
我目前在 Win7 PC 上运行最新版本的 Chrome。
【问题讨论】:
-
您是否正在使用一些 Web 开发代理?我观察到当我使用Charles 时,推送消息不会到达(Chrome/OSX)。
-
@YanivAknin 不,我不知道。我通过使用加密:true 在 javascript 中初始化我的 Pusher 实例来解决我的问题。
var pusher = new Pusher('mykey', { encrypted: true });
标签: javascript ruby-on-rails-3 pusher