Невозможно получать сообщения в клиенте браузера

Я безуспешно пытаюсь создать службу обмена мгновенными сообщениями pub-sub. Я не могу получать сообщения в клиенте браузера.

Следующий код взят из моего файла client1.html. Я считаю, что проблема, с которой я столкнулся, связана с тем, что клиент неудачно подписался на «/ канал». Я добавил предупреждения и получаю «ДО и ПОСЛЕ», но не «ВО ВРЕМЯ», и текст сообщения не появляется на консоли. Любые мысли о том, почему клиент не может видеть сообщения в браузере, будут оценены.

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);

person Joe Austin    schedule 02.07.2013    source источник
comment
Код браузера выглядит нормально. Можете ли вы предоставить код сервера Faye? Единственное, о чем я сомневаюсь, это ваш веб-адрес. Вы, очевидно, изменили URL-адрес, но трудно сказать, обменивались ли вы работами и сохраняли формат или просто перешли по случайному адресу. @ используется для отправки запроса имени пользователя/пароля вместе с запросом.   -  person travis    schedule 02.07.2013
comment
@travis Я обновил вопрос.   -  person Joe Austin    schedule 02.07.2013


Ответы (1)


Я только что настроил Faye для нашего приложения, вы делаете

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

у меня не сработало, сработало вот это

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

Я также думаю, что вы должны использовать весь URL-адрес при создании Фэй, а не только последнюю часть, например:

var client = new Faye.Client('http://my.url.com/faye', { timeout: 20 });
person Alberto Zaccagni    schedule 02.07.2013
comment
Я также думаю, что вы должны использовать весь URL-адрес при создании Фэй, а не только последнюю часть, например: var client = new Faye.Client('my.url.com/faye', { timeout: 20 }); Для будущих ссылок другим, этот бит не сработал ... - person Joe Austin; 03.07.2013
comment
@JoeAustin: Привет, я тоже сталкиваюсь с такой же проблемой: я могу отправлять сообщения на сервер, но не могу публиковать сообщения с сервера для всех клиентов. есть ли какие-либо проблемы, связанные с URL-адресом, который я использую для Faye на клиенте? Если у вас есть время, не могли бы вы взглянуть на мой код. github.com/pulkitsharva/ChatAppOpenshift Еще 1 вещь, которую я получаю об ошибке веб-сокета, так что есть идеи по этому поводу? - person Pulkit; 14.05.2014