【发布时间】:2013-07-02 14:58:05
【问题描述】:
我没有成功尝试创建发布-订阅即时消息服务。我无法在浏览器客户端中接收消息。
以下代码来自我的 client1.html 文件。我相信我遇到的麻烦与客户未成功订阅“/频道”有关。我已经添加了警报,并且收到了“之前和之后”,但没有收到“期间”,并且 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);
【问题讨论】:
-
浏览器代码看起来不错。你能提供服务器faye代码吗?我唯一质疑的是你的网址。您显然更改了 URL,但很难判断您是交换作品并保持格式还是只是通过随机地址。
@用于随请求一起发送用户名/密码查询。 -
@travis 我已经更新了问题。
标签: node.js publish-subscribe faye