【问题标题】:Pusher Error - Undefined is not a functionPusher 错误 - 未定义不是函数
【发布时间】:2014-12-19 19:29:11
【问题描述】:

在我的 pusherTrigger 方法中获取 Uncaught TypeError: undefined is not a function

这是一个简单的消息传递系统,其中一个用户向另一个用户发送消息,接收者应该会收到通知。我有一个compose_message 操作,应该将消息推送到频道private-incomingMessages

export default Ember.ObjectController.extend(window.EmberPusher.Bindings, window.EmberPusher.ClientEvents, {
  content: {},
  logPusherEvents: true,
  PUSHER_SUBSCRIPTIONS: {'messageChannel': ['client-compose-message'],
                       'incomingMessages': ['client-user-messages']},
  actions: {
    compose_message: function(){
        var self = this, content = this.get('messageContent');
        self.get('pusher.connection').pusherTrigger('incomingMessages', 'client-user-messages', {'message': content}); //not registering pusherTrigger as a method
    },

    clientUserMessages: function(){
        console.log("client user messages is working!");
    }
});

如果您需要更多信息,请告诉我。可以的话请帮忙!

【问题讨论】:

    标签: javascript ember.js push-notification pusher


    【解决方案1】:

    抱歉,您的问题是什么?您的后端没有 auth 路由。

    【讨论】:

    • 抱歉,我不认为我想要私人频道。我使用公共问题更新了我最初的问题。
    【解决方案2】:

    您只能在 private channels 上触发客户端事件,因此您需要使用私有通道(我看到您拥有它们,然后将它们删除)。请参阅Pusher client event docs

    因此您需要authenticate your private channel,因此您需要/pusher/auth 端点。

    为了创建 private- 频道名称,EmberPusher 文档建议您在控制器 init 函数中建立订阅哈希。

    Ember.ObjectController.extend(window.EmberPusher.Bindings, window.EmberPusher.ClientEvents, {
      init: {
        // build subscription hash here
      },
      ...
    });
    

    根据EmberPusher docs,您需要camelise 事件名称,所以我认为compose_message 应该是clientComposeMessage

    最后,调用pusherTrigger 的代码看起来不正确。 EmberPusher 文档显示:

    this.pusherTrigger(this.get('channelName'), eventName, this.get('data'));
    

    在您的示例中,似乎在连接对象上调用了pusherTrigger

    【讨论】:

      猜你喜欢
      • 2014-08-03
      • 2020-11-07
      • 2015-02-24
      • 2013-06-21
      • 2013-06-06
      • 2014-05-26
      • 1970-01-01
      • 1970-01-01
      • 2015-11-21
      相关资源
      最近更新 更多