Réactif de bout en bout
Un message entrant met à jour un $x — le DOM suit, sans abonnement manuel ni tuyauterie à écrire.
Le socket parle directement aux états réactifs $ — reconnexion et reprise de session incluses, salons, présence, flux, requête/réponse typée.
Un message entrant met à jour un $x — le DOM suit, sans abonnement manuel ni tuyauterie à écrire.
room(), présence réactive et historique par salon — rejoindre, diffuser, savoir qui est là, tout est fourni.
Jeton rafraîchi en vol, resynchronisation anti-entropie automatique, et sessionExclusive (true/'replace'/'refuse') pour une identité mono-session.
$Ci-dessous, une simulation honnête : aucun serveur — juste une minuterie qui pousse de faux messages dans une liste réactive, pour sentir la forme de l'API.
<script> @sock = µsocket "wss://jeu/play" @sock.on 'chat', (p)-> $messages.push(p) </script> <button @click={@sock.send 'chat', texte: $texte}> Envoyer </button>
En attente du premier message…
Chiffre de fan-out : bench serveur interne, pas encore repris dans la doc de référence publiée — à lire comme indicatif.
sock.request() résout une Promise depuis le µ:ack du serveur.
Deltas numérotés avec rattrapage automatique en cas de trou.
Un store réactif de qui est là — global ou par salon.
room() avec diffusion scopée et historique optionnel.
Une micro-coupure est tamponnée et rejouée juste après le µ:welcome.
Une seule connexion par identité — true/'replace'/'refuse'.
N'importe quel back existant pousse du temps réel par un POST HTTP signé.
Interpole les positions réseau saccadées à la fréquence d'affichage.
| Critère | MJS-WS | Socket.IO | Meteor | WebSocket nu |
|---|---|---|---|---|
| Reconnexion + reprise | ✓ | reconnexion seule | reconnexion, sans rejeu | manuel |
| Salons / présence | ✓ | salons seuls | pub/sub | aucun |
| Binaire schématisé | ✓ | non | non (EJSON texte) | octets à la main |
| Intégration réactive front | ✓ | non | ✓ | non |
| Poids | partagé avec le runtime MJS | ~35 Ko | framework complet | 0 Ko (natif) |
Chiffres indicatifs, donnés pour être honnêtes, pas promotionnels.
Une commande pour récupérer le framework.
npm install mjs-frameworkLe cœur + seulement les modules utiles :
mjs.config.json"runtime": ["socket", "schema", "smooth"]