IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Shared Worker : comment se déroule la connexion ?


Sujet :

JavaScript

  1. #1
    Membre émérite
    Avatar de Nothus
    Homme Profil pro
    aucun
    Inscrit en
    Juillet 2009
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : aucun
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 200
    Points : 2 427
    Points
    2 427
    Billets dans le blog
    27
    Par défaut Shared Worker : comment se déroule la connexion ?
    Bonjour,

    J'ai regardé un peu sur le net mais la doc (notamment MDN de Mozilla) ne précise pas spécifiquement comment se déroule le partage des messages entre pages qui partagent un même SW (protocole particulier, comment sont sérialisés les données, etc).

    Je note que les ports sont ouverts en local : j'imagine la connexion déjà active (c'est-à-dire que l'on a un couple de ports ouverts à chaque nouvel onglet, et non pas un port par thread qui communique avec le thread du SW), donc sans possibilité d'émettre depuis une autre application ?

    Je rêve peut-être mais un même SW entre plusieurs navigateurs (ou même une application tout à fait différente), ce serait chouette... notamment pour utiliser les fonctionnalités physiques de l'ordinateur via un logiciel qui exploite les ressources matériels et rebascule des données à l'onglet, sans dépendance du navigateur.

    Si vous avez une doc sous la main qui détaille davantage le fonctionnement "réel" des web sockets en bas-niveau (socket), je suis preneur !

    Bonne journée à tous,

    Julien.

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    C’est vrai que le MDN ne pointe pas vers la doc de postMessage qui est le mécanisme sous-jacent.

    Note qu’un worker, même partagé, reste dépendant d’un contexte d’exécution JS et donc d’un moteur JS. Les différences d’implémentations (par exemple Spidermonkey pour Firefox, V8 pour Chrome) rendent techniquement difficile de partager un worker entre différents navigateurs. Pour l’instant je n’ai pas connaissance que ça ait été tenté.

    Les objets JS transmis par postMessage sont sérialisés (voir clonage structuré). Comme les contextes d’exécution sont différents, des mécanismes de sécurité entrent en jeu, avec notamment la notion de propriété : un objet appartient à un contexte, et en particulier une fonction ne peut pas être exécutée si elle provient d’un autre contexte. C’est la raison pour laquelle la sérialisation ne transmet pas les fonctions.


    Je pense que ce que tu cherches à faire ressemble plus à un schéma « classique » de serveur local (par exemple un débogueur). Un grand nombre de langages (PHP CLI, Python, Ruby, Node.JS, …) incluent une bibliothèque ou une extension pour créer un serveur HTTP simple qui tourne dans un terminal. Tu y accèdes alors en faisant de simples requêtes ajax, et là peu importe le navigateur.

    Peux-tu nous en dire plus sur tes objectifs ?

  3. #3
    Membre émérite
    Avatar de Nothus
    Homme Profil pro
    aucun
    Inscrit en
    Juillet 2009
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : aucun
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 200
    Points : 2 427
    Points
    2 427
    Billets dans le blog
    27
    Par défaut
    Pour être honnête pas vraiment d'objectif précis en tête, je travaille à un projet de logiciel de gestion de connaissances (dans le domaine de la décision publique) qui intègre une version du protocole NNTP, SMTP et d'IMAP, développé en Python (3.5) avec une BDD SQLite (pour des raisons de rapidité de développement, le but étant une intégration avec n'importe quelle BDD compatible SQL). L'idéal est de fournir en plus une interface web (en websocket, pour des raisons d'une plus grande flexibilité des échanges) qui, quant à elle, serait plutôt sur NodeJS compte tenu de la grande souplesse entre serveur et client offerte par SocketIO.

    Les SW m'intéressent pour plusieurs niveaux : un script JS unique qui gère l'authentification, le log ainsi que les échanges avec le serveur, avant de rebasculer le travail à des Wk dédiés aux usages, ainsi qu'aux pages ouvertes (probablement une par cœurs de métier). En gros, chaque thread pourrait être développé indépendamment des autres, facilitant le développement rapide et organisé en groupe de développement.

    Pour l'anecdote, j'ai sorti un bouquin cet été (Intelligence Politique), qui évoque les grandes lignes du projet.

    Mon but serait éventuellement d'avoir un point unique qui soit une sorte de "tête pensante" pour la partie client par un navigateur web ; les plus grandes fonctions étant de toute façon déjà fournies par les clients des protocoles NNTP, SMTP ou IMAP (j'ai opté une compatibilité renforcée avec Thunderbird). Les SW ne me semblaient pas mal mais effectivement probablement pas orientés vers des tâches plus spécifiques utilisant les sockets.

    Pour postMessage, je n'avais effectivement pas détaillé la page, même si elle reprend pas exactement l'implémentation dans le navigateur, c'est une bonne piste (merci !). Noté pour la sérialisation.

    J'espère ma réponse claire, j'ai encore des points non-arbitrés dans mon projet...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] Comment savoir si une connexion SQL est disponible ?
    Par mister3957 dans le forum Accès aux données
    Réponses: 4
    Dernier message: 19/10/2006, 10h53
  2. Comment avoir de la connexion ?
    Par wareq dans le forum Hardware
    Réponses: 10
    Dernier message: 20/02/2006, 19h21
  3. Comment savoir si une connexion est deja ouverte?
    Par ghor_bey dans le forum Web & réseau
    Réponses: 3
    Dernier message: 29/07/2005, 15h17
  4. [Internet] Comment lancer automatiquement la connexion ?
    Par laayouni_mus dans le forum Web & réseau
    Réponses: 4
    Dernier message: 10/09/2004, 20h14
  5. [tomcat][jsp] Comment gerez vous vos connexions bdd?
    Par olive.m dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 21/06/2004, 17h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo