Nachricht senden
Jedes andere DevTools-Panel liest. Dieses schreibt: Es sendet eine Nachricht in das laufende System. Das macht es zu einer anderen Art von Funktion — und gibt ihm einen anderen Default.
const devtoolsOptions = DevToolsOptions.create() .withAllowMessageSending();
await DevTools.attach(system, devtoolsOptions);Es gibt zwei Schalter, und nur einer davon ist eine Sicherheitsentscheidung:
| Schalter | Wirkung |
|---|---|
panels: { send: false } | Blendet das Panel aus |
allowMessageSending | Gewährt die Fähigkeit |
Eine Ansicht auszublenden und ein System schreibbar zu machen sind verschiedene Entscheidungen, also sind es verschiedene Einstellungen. Ohne die Bestätigung erscheint das Panel weiterhin in der Navigation — als deaktivierter Eintrag, der die zu ändernde Einstellung benennt, statt still zu fehlen.
Verwendung
Abschnitt betitelt „Verwendung“Actor auswählen, JSON schreiben, Send drücken. Die Auswahlliste speist sich aus dem Live-Actor-Baum, sodass ein gestoppter Actor verschwindet, statt auswählbar zu bleiben, bis das Senden fehlschlägt.
Das Panel führt ein kurzes Protokoll dieser Sitzung — Zeit, Nachrichtentyp und Empfänger — sodass eine Folge von Versuchen nachvollziehbar bleibt.
Was der Server akzeptiert
Abschnitt betitelt „Was der Server akzeptiert“Der Body wird auf dem Server validiert, und das Panel gibt dessen Ablehnung wörtlich wieder, statt die Regeln zu wiederholen — zwei Kopien einer Regel sind der Weg, auf dem sie auseinanderlaufen.
- Nur JSON-Objekt oder -Array. Eine nackte
42oder ein"hello", das inonReceiveankommt, ist weit eher ein vertippter Body als eine Absicht. - Höchstens 64 KiB. Ein unbegrenztes Feld an einem Schreib-Endpunkt ist ein Weg, beliebig viel Speicher aus einem Browser in eine Mailbox zu schieben.
- Nur unterhalb von
/user. System-Actors sind die Maschinerie des Frameworks — Mailboxen, Cluster-Gossip, der DevTools-Hub selbst — und eine handgeschriebene Nachricht an sie wird bestenfalls ignoriert. - Kein Absender. Der
senderdes Empfängers istNone. Einen zu fälschen würde ihn auf einen Actor zeigen lassen, der nie etwas gesendet hat, und eine Antwort ginge irgendwohin, wo sie niemand erwartet.
Was es nicht kann
Abschnitt betitelt „Was es nicht kann“Die Nachricht ist JSON, also ein einfaches Objekt. Sie kann keine
PoisonPill, kein Kill und keine andere Klasse sein, die das System
besonders behandelt — das sind Instanzen, und JSON kann keine
konstruieren. Diese Grenze ist strukturell statt durch eine Prüfung
erzwungen, und genau deshalb hält sie.
Was es kann: deinen Actors Nachrichten schicken, auf die sie reagieren. Behandle die Bestätigung so, wie du jeden Schreibzugriff auf ein laufendes System behandeln würdest.
