1

pub-sub インスタント メッセージング サービスを作成しようとして失敗しました。ブラウザ クライアントでメッセージを受信できません。

次のコードは、client1.html ファイルからのものです。私が抱えている問題は、クライアントが '/channel' へのサブスクライブに失敗したことに関連していると思います。アラートを追加しましたが、「BEFORE & AFTER」は受信していますが、「DURING」は受信しておらず、コンソールに message.text が表示されません。クライアントがブラウザでメッセージを表示できない理由についての考えをいただければ幸いです。

var client = new Faye.Client('/faye',{
    timeout: 20
});
alert("BEFORE client subscription");
client.subscribe('/channel', function(message) {
    $('#messages').append('<p>' + message.text + '</p>');
    alert("DURING client subscription");
    console.log(message.text);
});
alert("AFTER client subscription");

ブラウザ コンソールで次のエラーが繰り返し表示されます。

POST http://my.server@server:8000/faye 404 (Not Found) 

このエラーは、次の行を参照する「faye-browser.js:2023」を指しています。

xhr.send(Faye.toJSON(message));

編集 これはserver.jsファイルです

var fs = require("fs");
var config = JSON.parse(fs.readFileSync("config.json"));
var host = config.host;
var port=config.port;
var express = require("express");
var Faye   = require('faye');
var bayeux = new Faye.NodeAdapter({mount: '/faye', timeout:45});
var app = express();
app.configure(function(){
  app.use(express.bodyParser());
  app.use(express.static('/'+__dirname));
});
app.post('/message', function(request, response){
  bayeux.getClient().publish('/channel', {text:request.body.message});
  console.log('broadcast message:' + request.body.message);
  response.send(200);
});
bayeux.attach(app);
app.listen(port);
4

1 に答える 1

4

アプリケーション用に Faye を構成したところです。

bayeux.attach(app);
app.listen(port);

私にとってはうまくいきませんでした、うまくいったのはこれです

bayeux.attach(app.listen(port, function() {}));

また、次のように、最終部分だけでなく、Faye を作成するときに URL 全体を使用する必要があると思います。

var client = new Faye.Client('http://my.url.com/faye', { timeout: 20 });
于 2013-07-02T16:01:44.927 に答える