2010-07-27 5 views
0

L'approche Nginx de HTTP PUSH est relativement simple. Il y a 3 parties impliquées: l'abonné (récepteur), l'éditeur (expéditeur), et le serveur lui-même agissent en tant que serveur de multidiffusion. Nginx peut également se séparer en un canal différent avec un ID de canal différent auquel l'utilisateur peut accéder. Mais je ne sais toujours pas comment autoriser/limiter le contenu uniquement pour l'utilisateur connecté, ou envoyer uniquement les données nécessaires à cet utilisateur, au lieu de le transmettre en multidiffusion à quiconque connaît l'ID du canal.Session/authorize comet sur Nginx HTTP PUSH

Si possible, est-il possible d'utiliser uniquement un canal et d'envoyer des données à l'utilisateur de manière sélective?

Actuellement, je cours sur la même base de données, mais l'expéditeur est écrit en ruby, en utilisant nginx, et le frontend est écrit en utilisant PHP/GWT.

Merci beaucoup

Répondre

1

Voici ma configuration: >

   location = /broadcast/sub { 
        default_type text/json; 
        set $push_channel_id $arg_channel; 
        push_subscriber; 
        push_subscriber_concurrency broadcast; 
        push_channel_group broadcast; 
       } 

       location = /broadcast/pub { 
        set $push_channel_id $arg_channel; 
        push_publisher; 
        push_min_message_buffer_length 5; 
        push_max_message_buffer_length 20; 
        push_message_timeout 10s; 
        push_channel_group broadcast; 
       } 

I send new messages with curl 

    $ch = curl_init($pub_url); 
    $data = array('status' => $message); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, Array("Content-Type: 
text/json")); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $return = curl_exec($ch); 
    curl_close($ch); 

Thanks for any hints... 
1

Peut-être que vous pouvez utiliser ma fourchette du module http_push_module, il implémente bien l'accès de sécurité du grain aux canaux. Il offre des temps d'expiration aux canaux et par client IP/par canal de sécurité (il ajoute en outre jsonp soutien si vous en avez besoin, comme plus):

https://github.com/Kronuz/nginx_http_push_module

Utilisation du module, vous pouvez donner à votre connecté aux utilisateurs une clé valide à utiliser (qui peut même expirer, ou simplement utiliser FFFFFFFF sinon comme date d'expiration pour qu'elle n'expire jamais) et être aussi restrictive que vous le souhaitez avec leur accès, même en utilisant leur adresse IP intégrée dans la clé ouvrir "la chaîne. J'espère que ça aide.