2014-03-02 2 views

ответ

6

На клиенте:

var pusher = new Pusher('your-app-key', {authTransport: 'parse'}); 

Pusher.authorizers.parse = function (socketId, callback) { 
    var pusherData = { 
     socket_id: socketId, 
     channel_name: this.channel.name 
    }; 
    Parse.Cloud.run('authorizePusherChannel', pusherData, { 
     success: function (result) { 
      callback(false, JSON.parse(result)); 
     }, 
     error: function (error) { 
      callback(true, error); 
     } 
    }); 
}; 

На Разбор Облаке:

Parse.Cloud.define('authorizePusherChannel', function (request, response) { 
    if (!request.user) { response.error('User should be autenticated.'); } 
    var pusherAppKey = 'your-pusher-app-key'; 
    var pusherAppSecret = 'your-pusher-app-secret'; 
    var stringToSign = request.params.socket_id + ':' + request.params.channel_name; 
    var authToken = pusherAppKey + ':' + crypto.createHmac('sha256', pusherAppSecret).update(stringToSign). digest('hex');  
    response.success(JSON.stringify({auth:authToken})); 
}); 
+1

Я думаю, что есть часть здесь отсутствует, который устанавливает Authorizer использовать 'parse' один. – leggetter

+1

@leggetter вы правы! Добавил его в ответ. Благодаря! –

+0

Это не работает для меня. Вызывается конечная точка (подтверждается отладкой консоли синтаксического анализа). Ответ выглядит как действительный ключ с ключом с ключом ... Однако в консоли толкателя появляется ошибка: «Информация об аутентификации, необходимая для подписки на частный чат» – Kevin

0
Pusher.authorizers.parse = function (socketId, callback) { 
    var pusherData = { 
     socket_id: socketId, 
     channel_name: this.channel.name 
    }; 
    Parse.Cloud.run('authorizePusherChannel', pusherData, { 
     success: function (result) { 
      callback(false, JSON.parse(result)); 
     }, 
     error: function (error) { 
      callback(true, error); 
+0

Какой смысл здесь? –

 Смежные вопросы

  • Нет связанных вопросов^_^