したがって、私はnode.jsとfayeに非常に慣れていないため、これはかなり基本的なことだと思いますが、何を尋ねるべきかわかりません。
ノードjitsuで実行されているfayeサーバー用に次のセットアップがあります。
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);
次に、それに接続するレールアプリがあります。
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);
});
});
Rails アプリが faye スクリプト用に読み込まれると、bad request 400 エラーが発生するようになりました。
送信されるパラメーターは具体的には次のとおりです。
[{"channel":"/meta/handshake","version":"1.0","supportedConnectionTypes":["callback-polling"],"id":"1"}]
そのため、設定しているヘッダー パラメータは、faye が行うこの「メタ」ハンドシェイクで送信されていないようです。
このサーバー認証を導入する前は、問題なく機能し、メッセージをアプリにカールさせることができました。ダイスはありません。
私が間違っているアイデアはありますか?
ありがとう!