Je construis une extension Chrome qui se connecte aux Websockets et récupère des données. J'essaye de construire un moyen que l'utilisateur choisisse une option de popup.html et change à quel websocket la connexion sera faite. Cela fonctionne bien.Comment fermer correctement les Websockets
Mon problème est qu'après avoir sélectionné une option, la nouvelle connexion est faite à cette socket Web mais la précédente continue de retourner des données. Je voudrais fermer cette connexion précédente avant d'en ouvrir une nouvelle.
popup.js (sur le changement RadioButton stocke la nouvelle valeur)
$(function() {
$("input:radio[name=exc]").change(function() {
chrome.storage.local.set({'checked':this.value}, function() {
});
});
});
update.js (recevoir de nouveaux RadioButton sélectionné, je suis en train de fermer la websocket preivous)
chrome.storage.onChanged.addListener(function(changes, namespace) {
chrome.storage.local.get("checked", function(data) {
if(data.checked == "foo") {
var ws = new WebSocket('wss://api.foo.com/ws');
ws.onopen = function() {
ws.send(JSON.stringify({"event":"test", "channel":"test"}));
};
ws.onmessage = function(msg) {
var price = response[7];
if(hb != "hb" && typeof hb != 'undefined') {
price = price.toString();
chrome.extension.sendMessage(price);
}
};
ws.close();
}
else if(data.checked == "bar") {
var pusher = new Pusher('xxxxxxxxxxxxx');
var tradesChannel = pusher.subscribe('test'),
child = null;
tradesChannel.bind('test', function (data) {
var price = data.price;
if(typeof data.price != 'undefined') {
price = price.toString();
chrome.extension.sendMessage(price);
}
});
pusher.disconnect();
}
});
});
Si Je laisse le code comme il est, je reçois WebSocket connection to 'wss://api.foo.com/ws' failed: WebSocket is closed before the connection is established.
et aucune donnée n'est reçue.