Faye PubSub Extension在消息中添加额外的数据字段

时间:2014-04-10 21:59:55

标签: node.js faye

我正在使用Faye和Node.js(javascript)聊天服务器,我正在努力实现“通知”#39;这样,当一个用户订阅时,服务器将向该频道发送一条消息,其中包含一个属性__messageType =' subscribe'

服务器代码看起来如此(ext字段存在且工作正常)

var chat = new Faye.NodeAdapter()... //etc
chat.addExtension({
    incoming: function(message, callback) {
        if (message.channel === '/meta/subscribe') {
            console.log('A new user subscribed');
            chat.getClient().publish(message.subscription, {
                ext: message.ext,
                __messageType: 'subscription'});
        }
        callback(message);
    }
});

在我的客户端,我附上了一个传入的'扩展程序,以便人们可以轻松确定这是订阅通知,而不是实际的数据消息'

clientChat.addExtension({
    incoming: function(message, callback) {
        console.log('Incoming message', message);
        message.getType = function() {
            return message.__messageType;
        };
        messge.getData = function(key) {
            return message.ext[key];
        };
        callback(message);
    }
});

我正在以这种方式构建我的消息,人们可以这样做:

var sub = new Faye.Client(url).subscribe('/messages', function(message) {
    if (message.getType() === 'subscribe') console.log('Someone subscribed');
    if (message.getType() === 'unsubscribe') console.log('Someone left');
    else console.log('Ext data: ', message.ext);

问题是我的消息是通过包含在“数据”中的ext字段来实现的。我不知道它来自哪里。我的getType和getData方法已成功添加,但它们显然不起作用,因为ext字段不再出现在顶层,而是嵌入到消息的数据字段中。

Expected:                                  Actual:
channel: "/messages"                       channel: "/messages/"
ext: { variousData }                       data: {ext: variousData}
getData: function (key) {                  getData: function(key) {
getType: function () {                     getType: function() {
id: "4"                                    id: "4"

有没有人知道为什么我会收到这些数据'我的消息中的字段?

0 个答案:

没有答案