runtime.connect()
=================

Créer une connexion pour plusieurs cas d'utilisation pout votre extension.

Vous pouvez utiliser cette facilité dans les situations suivantes:

* Dans un script de contenu, pour établir une connexion avec le script d'arrière plan (ou tout script priviligié, comme les scripts de popup ou scripts de page d'option)
* Dans un script d'arrière plan (ou script priviligié équivalent), pour établir une connexion avec une extension différente.

Attention, vous ne pouvez pas utiliser cette fonctionnalité pour connecter une extension à son script de contenu. Pour réaliser cette opération, il vaut mieux utiliser `tabs.connect()`.

Syntaxe
-------


```js
var port = browser.runtime.connect(
  extensionId, // optional string
  connectInfo, // optional object
);
```

### Paramètres

`extensionId`Facultatif

`string`. L'ID de l'extension à laquelle se connecter. Si la cible à défini un ID dans la clé applications du fichier manifest.json, alors `extensionId` doit avoir cette valeur. Autrement, il doit avoir l'ID qui a été généré pour la cible.

`connectInfo`Facultatif

`object`. Détails de la connexion:

`name`Facultatif

`string`. Sera passé dans `runtime.onConnect` pour les processus qui écoutent un évènement de type connexion.

`includeTlsChannelId`Facultatif

`boolean`. indique si l'ID du canal TLS sera transmis à `runtime.onConnectExternal` pour le processus qui écoutent l'événement de connexion.


### Valeur retournée

`runtime.Port`. Port à travers lequel les messages peuvent être envoyés et reçus. L'événement `onDisconnect` du port est déclenché si l'extension n'existe pas.

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Exemples
--------

Le script de contenu :

* se connecte au script d'arrière-plan et stocke le port dans une variable appelée `myPort`.
* Ecoute les messages sur `myPort` et les enregistre
* Envoie des messages au script d'arrière pla, en utilisant `myPort`, lorsque l'utilisateur clique sur le document.


```js
// content-script.js

var myPort = browser.runtime.connect({ name: "port-from-cs" });
myPort.postMessage({ greeting: "hello from content script" });

myPort.onMessage.addListener(function (m) {
  console.log("In content script, received message from background script: ");
  console.log(m.greeting);
});

document.body.addEventListener("click", function () {
  myPort.postMessage({ greeting: "they clicked the page!" });
});
```


Les scripts d'arrière plan correspondant :

* Ecoute les tentatives de connexion du script de contenu.
* Quand il reçoit une tentative de connexion :
    + Stocke le port dans une variable nommé `portFromCS`.
    + envoie un message au script de contenu en utiliant le port.
    + Commence à écouter les messages reçus sur le port, et les enregistre.
* Envoie des messages au script de contenu, à l'aide de `portFromCS`, lorsque l'utilisateur clique sur l'action du navigateur de l'extension.


```js
// background-script.js

var portFromCS;

function connected(p) {
  portFromCS = p;
  portFromCS.postMessage({ greeting: "hi there content script!" });
  portFromCS.onMessage.addListener(function (m) {
    console.log("In background script, received message from content script");
    console.log(m.greeting);
  });
}

browser.runtime.onConnect.addListener(connected);

browser.browserAction.onClicked.addListener(function () {
  portFromCS.postMessage({ greeting: "they clicked the button!" });
});
```


**Note :**

Cette API est basée sur l'API Chromium `chrome.runtime`. Cette documentation est dérivée de `runtime.json` dans le code de Chromium code.

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.