Il y a plusieurs semaines, j'ai lancé un projet de diagramme de nœuds de force de ressort en utilisant des données de Twitter. C'est devenu compliqué, et j'ai décidé qu'une vidéo était le meilleur moyen de le présenter. Mais la vidéo était longue et ennuyeuse. Voici un premier instantané.
Half-baked ideaIdée mi-cuite
Le dimanche des gaufres, j'ai demandé à plusieurs membres de la famille d'examiner et de suggérer comment l'améliorer. Ils ont tous fait de bons commentaires, mais Daniel voulait vraiment me montrer quelque chose. Je n'arrêtais pas de le repousser, jusqu'à ce que je commence à réaliser que ma vidéo n'était pas si incroyable après tout.
"D'accord Daniel. Qu'est-ce que tu as?"
"Allez sur Google et demandez Écoutez Wikipédia ."
Cela vous amènera à http://listen.hatnote.com/ . J'ai regardé (et écouté) pendant plusieurs minutes en me demandant comment cela fonctionnait... J'ai fait de mauvaises suppositions. Puis j'ai cliqué sur à propos lien et suivi mon chemin vers code JavaScript de hatnote vers la ligne 123 où j'ai commencé à apprendre WebSockets .Ils permettent à un navigateur de garder un port bidirectionnel ouvert vers un serveur Web et, en 2022, la plupart des navigateurs les prennent en charge. Lorsque vous avez consulté la page Écouter Wikipédia, le JavaScript exécuté dans votre navigateur écoutait le WebSocket de Wikipédia et obtenait immédiat notifications sur les mises à jour de wikipedia. Documentation vous n'avez pas besoin.
Twitter a sa propre API et n'utilise pas WebSockets. La vidéo que je faisais n'était qu'un sondage toutes les cinq minutes, historique, pas interactif comme les mises à jour de wikipedia. Je veux utiliser un WebSocket, j'ai donc besoin d'autre chose.
Après avoir fouiné, j'ai découvert que le groupe de sites stackexchange (y compris stackoverflow) avait un WebSocket bidirectionnel. Le WebSocket peut s'abonner à toutes les nouvelles publications, puis s'abonner et se désabonner aux mises à jour de ces publications. (Environ. j'ai utilisé un poste d'échange de pile pour mon information et il est assez clair que des messages apparaissent qui ne sont peut-être pas nouveaux.)
Que puis-je faire avec JSL ? Les WebSockets sont des éléments de navigateur. Après avoir cherché un peu, j'ai trouvé un package Python WebSocket. Le code Python est un cale entre JSL et le WebSocket. Je suis à peu près sûr que tout pourrait être fait en JSL, mais il y a des morceaux laids que je ne veux pas traiter... alors Python.
Il y a une petite quantité de code WebSocket générique dans le JSL suivant et beaucoup de code spécifique à stackexchange. Si vous construisez une solution similaire, pas pour stackexchange, vous garderez probablement le bit Python et utiliserez simplement le reste comme guide approximatif. Il y a des commentaires dans le code, et puisqu'il est emballé en tant que complément, vous pouvez trouver le code dans Affichage-> compléments, choisissez WebSocket, cliquez sur le répertoire.
Après le lancement du complément, cela peut prendre un certain temps avant que les choses ne commencent à se produire. Généralement, quelque chose se produit toutes les 10 secondes environ, en particulier après que le complément a été exécuté suffisamment longtemps pour avoir un tas d'abonnements. Si vous n'avez rien vu ni entendu après cinq minutes, cela ne fonctionne probablement pas... surveillez la fenêtre du journal. J'ai décidé d'avoir besoin d'un écran de 1920 de large sur 1080 de haut pour ce projet en raison de la quantité de données qu'il doit afficher. Il sera difficile de le réduire; la grille de questions 9X9 doit afficher une description, une icône et des indicateurs. Ils sont tous peaufinés à la main pour avoir l'air OK. La police peut également nécessiter des ajustements. Voici une courte vidéo de ce à quoi cela ressemble après avoir couru un peu, mais exécuter le complément sera plus amusant. Le complément est pour Windows et JMP 16. Cela pourrait fonctionner sur un Mac mais n'a pas été testé.
Si vous n'essayez pas le complément, voici un bref extrait de vidéo.
Si vous exécutez le complément, vous pouvez cliquer sur les éléments et votre navigateur Web vous amènera à l'article.
Ajouter à Démo WebSocket avec Stackexchange