【问题标题】:POST pusher/auth 404 (Not Found)POST pusher/auth 404(未找到)
【发布时间】:2014-10-24 13:16:03
【问题描述】:

我正在尝试在本地 node.js 服务器上使用 Pusher 建立一个私人频道。出于某种原因,我无法让我的身份验证端点正常运行,并且不断收到 404 错误。

起初我认为这是我如何定义与本地服务器位置相关的端点的问题,但我认为这不是问题。更有可能的是,我对服务器-客户端-api 通信的不熟悉意味着我错过了一些重要的部分。

我查看了 Pusher 上的 authentication docs 以及我能找到的所有 SO 线程,但无济于事。

我已经安装了 Node 并且服务器正在运行,并且 Pusher 识别到已经建立了连接,我只是在身份验证失败。

任何帮助都将不胜感激。

这是在 index.html 中单击按钮时调用的客户端 JS:

在 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(未找到)

【问题讨论】:

  • 这是什么版本的express? var app = express( express.logger() ); 不对
  • 我 npm 安装了最新的 express 并且该行直接来自 Pusher 文档。应该是什么?
  • 快速记录器已移至morgan 项目。 npm install morganvar logger = require('morgan')var app = express();app.use(logger())

标签: javascript ajax node.js pusher


【解决方案1】:

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

此网址在服务器上不存在。再次检查 auth.js 的位置。

来自 Pusher 文档 (link)

authEndpoint(字符串)

服务器上将返回身份验证签名的端点 需要私人和存在渠道。默认为 '/pusher/auth'。

因此,您需要在服务器上创建身份验证端点并在设置 Pusher 实例进行身份验证时提供指向它的链接。

【讨论】:

    猜你喜欢
    • 2020-07-23
    • 1970-01-01
    • 2016-10-11
    • 2020-01-16
    • 1970-01-01
    • 2014-09-09
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多