Annonce

Réduire
Aucune annonce.

P2P dans navigateur

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • P2P dans navigateur

    Salut !

    Avec WebRTC, on peut maintenant échanger des informations entre navigateur sans plugin extérieur ou ouverture de port. D'où mon idée de projet : un site de partage de fichier, en peer-to-peer, sans client à télécharger.

    Voilà en gros (très gros) l'algorithme principal au quel j'ai pensé (soyez indulgent, je ne l'ai pas encore énormément travaillé). Si vous avez des idées de modification sur le principe même, n'hésitez pas à répondre sur ce topic :


    Code:
    fonction telecharger_fichier(id_fichier)
      liste_peers = telecharge_liste_peers(serveur, id_fichier)
    
      tant que (liste_peers.nombre == 0)
        sleep(1000)
        liste_peers = telecharge_liste_peers(serveur, id_fichier)
      
      pour chaque (peer dans liste_peers)
        si (demander_fichier_part(peer, id_fichier, range) == vrai)
          demarrer_transaction_fichier_part(peer, id_fichier, range)
          tant que (transaction_fichier_part(peer, id_fichier, range) == vrai)
            recevoir_fichier_part(peer, id_fichier, range)
          finir_transaction_fichier_part(peer, id_fichier, range)  
          envoyer_serveur_info(NOUVEAU_PEER, self_id)

    je travaillerais les spécifications dès que j'aurais le temps.
    self_id correspond à l'id du client exécutant ce script
    range correspond aux données que le client demande (ex : 0-1024)

    Pour ce qui est du projet en lui même, je pense que je l'hébergerais sur github de manière à ce que chacun puisse en créer un lui même et que j'hébergerais moi même une version.
    Celui qui se fait bête se débarrasse de la douleur d'être homme

  • #2
    Salut khs,
    Je n'ai pas bien compris.
    C'est du côté client ou du côté serveur ?
    En quel langage vas-tu coder l'algorithme ?
    ~ Yarflam ~

    ❉ L'Univers se dirige vers son ultime perfection ❉

    Commentaire


    • #3
      Yo !
      C'est pas avec ça que fonctionnera tout le projet, mais c'est pour illustrer mes propos (un snippet vaut mille mots) et comment en gros j'espère le faire fonctionner.

      C'est donc côté client, en JavaScript (avec l'API WebRTC et plus exactement la librairie PeerJS)
      Celui qui se fait bête se débarrasse de la douleur d'être homme

      Commentaire


      • #4
        sans client à télécharger
        Par définition, tu as forcément un programme client pour utiliser ton service... (Ici du P2P)

        J'avoue ne pas avoir saisi l'avantage d'utiliser un plugin de navigateur ou autre programme utilisant WebRTC au lieu d'un client lourd classique.

        Qui plus est, ton navigateur va devoir toucher au système de fichier dans ton cas. Pas sur que tu puisses faire ca comme ca (question de sécurité).

        Enfin, lorsque tes pairs vont fermer leut navigateur, ton transfert P2P va s'arrêter. En carricaturant un peu, l'intéret du P2P étant que les clients sont UP 24/24. Ce ne sera absolument pas le cas avec des navigateurs.

        Tortue 974.
        OxyGen Software
        Sécurité, développement, formations, informatique biomédicale
        [email protected]

        Commentaire


        • #5
          Effectivement, je soutiens l'idée de TorTukiTu. En plus le Javascript ralentira considérablement ta vitesse de transfert.
          En gardant l'idée du téléchargement bloc par bloc (principe du P2P), tu peux toujours réaliser un client / serveur optimisé, pour un projet quelconque.
          Par exemple un chat, un jeu en ligne, une web radio etc. Sans client P2P bien sur (juste AJAX / PHP). Ce sera un réseau en étoile.

          Voici un exemple :
          Plan.jpg
          Le rouge indique une donnée et le bleu une requête.

          Deux configurations sont possibles :
          _47 dépose une donnée sur le serveur, Sakarov va interroger le serveur pour avoir la mise à jour; il va recevoir le fichier de _47.

          Tu demandes (khs) un fichier à l'ensemble des PC connectés de ton canal (FRKorisS & TorTukiTu). FRKorisS ne possède pas le fichier, mais TorTukiTu si ! Ce dernier dépose le fichier sur le serveur (ça peut être un bloc de donnée). Et toi tu le récupères.

          NB : Les données qui transitent sont rarement des fichiers locaux - pour des questions de sécurités. Ce sont plutôt des morceaux de données lié à une activité (chat = message, jeu en ligne = action).
          NB2 : Je te conseilles de t'intéresser aux systèmes d'informations (SI) avant de te lancer. Quels sont les agents ? Comment vont-ils interagir entre eux ? Dans quel but ? Comment est stocké l'information ? Quel technologie peux-tu utiliser (programmation, système) ? La portabilité de ton application ? etc.
          Dernière modification par Yarflam, 03 novembre 2013, 11h04.
          ~ Yarflam ~

          ❉ L'Univers se dirige vers son ultime perfection ❉

          Commentaire


          • #6
            Envoyé par TorTukiTu Voir le message
            Par définition, tu as forcément un programme client pour utiliser ton service... (Ici du P2P)

            J'avoue ne pas avoir saisi l'avantage d'utiliser un plugin de navigateur ou autre programme utilisant WebRTC au lieu d'un client lourd classique.

            Qui plus est, ton navigateur va devoir toucher au système de fichier dans ton cas. Pas sur que tu puisses faire ca comme ca (question de sécurité).

            Enfin, lorsque tes pairs vont fermer leut navigateur, ton transfert P2P va s'arrêter. En carricaturant un peu, l'intéret du P2P étant que les clients sont UP 24/24. Ce ne sera absolument pas le cas avec des navigateurs.

            Tortue 974.
            Par "sans client nécessaire", je pense à "aucun client AUTRE que le navigateur nécessaire", soit aucun programme à télécharger en plus.
            C'est pas non plus un plugin de navigateur, c'est juste du code JS exécuté directement.
            Pour ce qui est de l'accès au système de fichier, c'est possible avec une API HTML5 : http://www.html5rocks.com/en/tutorials/file/filesystem/
            Par contre, pour ce qui est des pairs et du UP 24/24, j'y ai pensé et c'est vrai qu'on doit y réfléchir... Mais tout comme les programmes de torrent, certains peuvent fermer leur client torrent mais le laissent ouvert soit pour DL soit pour seed. ça pourrait être tout simplement pareil sauf qu'au lieu de laisser un programme de torrent ouvert ça serait juste un onglet.
            Celui qui se fait bête se débarrasse de la douleur d'être homme

            Commentaire


            • #7
              Mais tout comme les programmes de torrent, certains peuvent fermer leur client torrent mais le laissent ouvert soit pour DL soit pour seed. ça pourrait être tout simplement pareil
              Oui mais non. Le souci est la proportion d'utilisateurs qui vont laisser l'onglet ouvert. L'avantage d'un client classique, c'est qu'il se présente généralement sous la forme d'un démon. ie. tournant en permanence et ce d'une facon cachée pour l'utilisateur.
              Du coup, le client est up la pluspart du temps.
              Ce ne sera pas le cas avec un navigateur. Les gens ferment leur navigateur lorsqu'ils ont fini de surfer.

              Je vois très mal les utiliasteurs finaux laisser un onglet ouvert jour et nuit...

              N'oublions pas qu'un navigateur est avant tout fait pour naviguer... Ca n'a pas pour philosophie de remplacer les démons qui tournent sur l'OS hôte.

              En conclusion, je te répondrai que ce que tu veux faire est probablement fesable, mais trop contraignant pour être viable.

              Une solution plus astucieuse serait de coupler ton "site" avec un vrai client installé sur la machine cible. Regarde du côté de java web start. Ca te permettra d'installer facilement sur les clients tout ce dont tu auras besoin.

              Tortue 974.
              Dernière modification par TorTukiTu, 03 novembre 2013, 20h10.
              OxyGen Software
              Sécurité, développement, formations, informatique biomédicale
              [email protected]

              Commentaire

              Chargement...
              X