推送器错误 - 未定义不是一个功能

时间:2014-12-19 19:29:12

标签: javascript ember.js push-notification pusher

在我的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!");
    }
});

如果您需要更多信息,请与我们联系。如果可以,请帮忙!

2 个答案:

答案 0 :(得分:0)

抱歉,您的问题是什么?您的后端没有身份验证路径。

答案 1 :(得分:0)

您只能在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

相关问题