所以我对 node.js 和 faye 非常陌生 - 所以我认为这是非常基本的,但我不确定我应该问什么。
我为我的 faye 服务器设置了这个设置,在节点 jitsu 上运行:
var http = require('http'),
faye = require('faye');
var bayeux = new faye.NodeAdapter({mount: '/faye', timeout: 45});
// Handle non-Bayeux requests
var server = http.createServer(function(request, response) {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.write('Hello, non-Bayeux request');
response.end();
});
bayeux.attach(server);
server.listen(8000);
var fayeToken = "myToken";
var serverAuth = {
incoming: function(message, callback) {
// Add an error if the tokens don't match
if (fayeToken !== message.ext.auth_token)
message.error = 'Invalid auth token';
// Call the server back now we're done
callback(message);
}
};
bayeux.addExtension(serverAuth);
然后我有一个连接到它的 rails 应用程序。
在我添加 serverAuth 的东西之前,它工作正常。
当我像这样卷曲时:
curl http://myapp.jit.su/faye -d 'message={"channel":"/alerts", "data":"hello", "ext":{"auth_token":"myToken"}}'
我收到一条成功消息。
在 Rails 应用程序上的 JS 文件中,我有:
$(function() {
//FAYE CLIENT
var faye = new Faye.Client('http://myapp.jit.su/faye');
faye.setHeader('ext.auth_token', 'myToken');
faye.subscribe("/alerts", function(data) {
alert(data);
});
});
现在,当为 faye 脚本加载 rails 应用程序时,我收到一个错误的请求 400 错误。
发送的参数具体是:
[{"channel":"/meta/handshake","version":"1.0","supportedConnectionTypes":["callback-polling"],"id":"1"}]
因此,我设置的标头参数似乎没有在 faye 所做的“元”握手中发送。
在我进行此服务器身份验证之前,它工作得很好,我可以将消息卷曲到应用程序中。现在没有骰子。
有什么想法我哪里出错了吗?
谢谢!