2014-08-30 2 views
1

Я пытаюсь установить частный канал, используя Pusher на локальном сервере node.js. По какой-то причине я не могу заставить свою конечную точку аутентификации играть хорошо, и я продолжаю получать ошибку 404.Pusher/auth 404

Сначала я подумал, что это проблема с тем, как я определял свою конечную точку относительно местоположения локального сервера, но я не думаю, что это проблема. Скорее всего, моя мобильность с коммуникацией server-client-api означает, что я пропускаю какую-то большую часть.

Я просмотрел authentication docs на толкаче и буквально каждую ту нить, которую я мог найти, но безрезультатно.

У меня установлен узел, а сервер работает, и толкатель распознает, что соединение выполнено, я просто терпит неудачу при аутентификации.

Любая помощь вообще была бы очень оценена.

Вот на стороне клиента JS, который вызывается при нажатии кнопки над на index.html:

В client.js:

function startGame(){ 
    var nameinput = prompt("Give your game a name","My Game"); 
    if (nameinput !== null) { 
     var initialsinput = prompt("What are your initials?", "MG"); 
     if (initialsinput !== null) { 
      var pusher = new Pusher(key); 
      Pusher.channel_auth_endpoint = 'http://localhost:8080/pusher/auth.js'; 
      var channel = pusher.subscribe("private-"+gamename); 
      joined = 'client-opponent_joined'+gamename; 
      channel.bind('client-opponent_joined'+gamename, function(data) { 
       OnLikeDonkeyKong(data.nameinput,data.initialsinput); 
      }); 
     } 
     else {alert("I need your initials.");} 
    } 
    else {alert ("I need a game name.");} 
} 

Тогда над в /pusher/auth.js :

var express = require('express'); 
var Pusher = require('pusher'); 

    var app = express(express.logger()); 
    app.use(express.bodyParser()); 

    var pusher = new Pusher({ appId: 'xxx', key: 'xxx', secret: 'xxx' }); 

    app.post('/pusher/auth.js', function(req, res) { 
     var socketId = req.body.socket_id; 
     var channel = req.body.channel_name; 
     var auth = pusher.authenticate(socketId, channel); 
     res.send(auth); 
    }); 

    var port = process.env.PORT || 8080; 
    app.listen(port); 

Наконец, вот ошибка я получаю:

POST http://localhost:8080/pusher/auth.js 404 (Not Found) 
+0

Какая версия этого экспресса? 'var app = express (express.logger());' неверно – Jordonias

+0

I npm установил последнюю экспресс, и эта строка находится непосредственно из документов Pusher. Что это должно быть? –

+0

Экспресс-регистратор был перенесен в проект «morgan». 'npm install morgan'' var logger = require ('morgan') '. 'var app = express();' и 'app.use (logger())' – Jordonias

ответ

1

http://localhost:8080/pusher/auth.js

Этот адрес не существует на сервере. Проверьте местоположение auth.js еще раз.

Из толкателя документа (link)

authEndpoint (String)

Endpoint на сервере, который будет возвращать подпись аутентификации, необходимой для частных и наличие каналов. По умолчанию «/ pusher/auth».

Таким образом, вам необходимо создать свою конечную точку аутентификации на своем сервере и предоставить ссылку на нее при настройке экземпляра Pusher для аутентификации.

+0

То же самое! :) Примите усилия! – gofr1