我正在尝试在本地node.js服务器上使用Pusher建立专用通道。出于某种原因,我不能让我的auth端点玩得很好,我一直收到404错误。
起初我认为这是关于我如何定义与本地服务器位置相关的端点的问题,但我不认为这是问题。更有可能的是,我对服务器 - 客户端 - api通信的禁忌意味着我错过了一些大片。
我已经查看了推杆上的authentication docs以及我能找到的所有SO线程,但无济于事。
我已经安装了节点并且服务器正在运行,并且推送器识别出已建立连接,我只是在验证时失败。
任何帮助都会受到极大的赞赏。
这是在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 (Not Found)
答案 0 :(得分:1)
http://localhost:8080/pusher/auth.js
此网址上不存在此网址。再次检查auth.js的位置。
来自Pusher文件(link)
authEndpoint(String)
服务器上将返回身份验证签名的端点 私人和在线渠道需要。默认为' / pusher / auth'。
因此,您需要在服务器上创建身份验证端点,并在设置Pusher实例进行身份验证时提供指向它的链接。