1

私はノード js と faye を使用して、単にいくつかのメッセージをクライアントに渡しています。

ノードサーバーを作成します

var http = require('http'),
    faye = require('faye'),
    url =  require('url'),
    qs = require('querystring');
var POST;
var bayeux = new faye.NodeAdapter({mount: '/faye', timeout: 45});

function publish(request,response)
{
    var body = '';
    request.on('data', function (data) {
        body += data;
    });
    request.on('end', function () {
        POST = qs.parse(body);



        if(POST.secrete_key=="@#$werw*#@erwe*&^&*rw234234") // validate request using secret key
        {
            if(POST.root=="global"||POST.root=="web"){
                bayeux.getClient().publish(POST.channelWeb,{text: POST.textWeb});
            }
            if(POST.root=="global"||POST.root=="mobile"){
                bayeux.getClient().publish(POST.channelMobile,{text: POST.textMobile});
            }

            //eval(POST.auth_type+"_"+POST.update_type+"()");   
        }//end validate request
        else
        {
            response.writeHead(404);
            response.end('404 File not found');
        }
    });
    response.end();
}



// Handle non-Bayeux requests
var server = http.createServer(function (request,response)
{
    var pathRegex = new RegExp('^/publish/?$');
    var pathname = url.parse(request.url).pathname;
    if (pathRegex.test(pathname)) {
       publish(request, response);

    } else {
       render404(request, response);
    }
});

bayeux.attach(server);
server.listen(8000);

bayeux.getClient().publish(特定のクライアントにメッセージを発行するために使用します。

サブスクリプションjsを作成しました

var client = new Faye.Client(n.node_url+':8000/faye/');
client.subscribe(n.channel, function(message) {

    obj.processNotification(obj,message.text,n.user_id,n.user_type,n.channel);
});

問題は、チャンネルの作成方法がわからないことです

bayeux.getClient().publish(channel, message);

と 購読 方法 を 助け て ください . 前もって感謝します ................

4

2 に答える 2

0

チャンネルを作成する必要はありません。事前に設定する必要はありません。チャンネルにパブリッシュするだけで、そのチャンネル内のリスナーがデータを受信します。

コード内にチャネルをサブスクライブするコードが既にあります。

var client = new Faye.Client(n.node_url+':8000/faye/');
client.subscribe(n.channel, function(message) {

    obj.processNotification(obj,message.text,n.user_id,n.user_type,n.channel);
});
于 2012-06-15T21:40:56.437 に答える