update
This commit is contained in:
@@ -59,9 +59,9 @@ smartsend("/test", [(dataname1, data1, "text")], ...)
|
||||
smartsend("/test", [(dataname1, data1, "dictionary"), (dataname2, data2, "table")], ...)
|
||||
|
||||
# Receive returns a dictionary envelope with all metadata and deserialized payloads
|
||||
envelope = smartreceive(msg, ...)
|
||||
# envelope["payloads"] = [(dataname1, data1, "text"), (dataname2, data2, "table"), ...]
|
||||
# envelope["correlationId"], envelope["msgId"], etc.
|
||||
env = smartreceive(msg, ...)
|
||||
# env["payloads"] = [(dataname1, data1, "text"), (dataname2, data2, "table"), ...]
|
||||
# env["correlationId"], env["msgId"], etc.
|
||||
```
|
||||
|
||||
## Cross-Platform Interoperability
|
||||
@@ -104,8 +104,8 @@ smartsend("/cross_platform", data, nats_url="nats://localhost:4222")
|
||||
```javascript
|
||||
// JavaScript receiver
|
||||
const { smartreceive } = require('./src/NATSBridge');
|
||||
const envelope = await smartreceive(msg);
|
||||
// envelope.payloads[0].data === "Hello from Julia!"
|
||||
const env = await smartreceive(msg);
|
||||
// env.payloads[0].data === "Hello from Julia!"
|
||||
```
|
||||
|
||||
```python
|
||||
@@ -330,18 +330,18 @@ const nc = await connect({ servers: ['nats://localhost:4222'] });
|
||||
const sub = nc.subscribe("control");
|
||||
|
||||
for await (const msg of sub) {
|
||||
const envelope = await smartreceive(msg);
|
||||
const env = await smartreceive(msg);
|
||||
|
||||
// Process the payloads from the envelope
|
||||
for (const payload of envelope.payloads) {
|
||||
for (const payload of env.payloads) {
|
||||
const { dataname, data, type } = payload;
|
||||
console.log(`Received ${dataname} of type ${type}`);
|
||||
console.log(`Data: ${JSON.stringify(data)}`);
|
||||
}
|
||||
|
||||
// Also access envelope metadata
|
||||
console.log(`Correlation ID: ${envelope.correlationId}`);
|
||||
console.log(`Message ID: ${envelope.msgId}`);
|
||||
console.log(`Correlation ID: ${env.correlationId}`);
|
||||
console.log(`Message ID: ${env.msgId}`);
|
||||
}
|
||||
```
|
||||
|
||||
@@ -369,11 +369,11 @@ env, env_json_str = SmartSend("analysis_results", [("table_data", df, "table")])
|
||||
```javascript
|
||||
const { smartreceive } = require('./src/NATSBridge');
|
||||
|
||||
const envelope = await smartreceive(msg);
|
||||
const env = await smartreceive(msg);
|
||||
|
||||
// Use table data from the payloads field
|
||||
// Note: Tables are sent as arrays of objects in JavaScript
|
||||
const table = envelope.payloads;
|
||||
const table = env.payloads;
|
||||
```
|
||||
|
||||
### Scenario 3: Live Binary Processing
|
||||
@@ -423,10 +423,10 @@ from nats_bridge import smartreceive
|
||||
|
||||
# Receive binary data
|
||||
def process_binary(msg):
|
||||
envelope = smartreceive(msg)
|
||||
env = smartreceive(msg)
|
||||
|
||||
# Process the binary data from envelope.payloads
|
||||
for dataname, data, type in envelope["payloads"]:
|
||||
# Process the binary data from env.payloads
|
||||
for dataname, data, type in env["payloads"]:
|
||||
if type == "binary":
|
||||
# data is bytes
|
||||
print(f"Received binary data: {dataname}, size: {len(data)}")
|
||||
@@ -439,10 +439,10 @@ const { smartreceive } = require('./src/NATSBridge');
|
||||
|
||||
// Receive binary data
|
||||
function process_binary(msg) {
|
||||
const envelope = await smartreceive(msg);
|
||||
const env = await smartreceive(msg);
|
||||
|
||||
// Process the binary data from envelope.payloads
|
||||
for (const payload of envelope.payloads) {
|
||||
// Process the binary data from env.payloads
|
||||
for (const payload of env.payloads) {
|
||||
if (payload.type === "binary") {
|
||||
// data is an ArrayBuffer or Uint8Array
|
||||
console.log(`Received binary data: ${payload.dataname}, size: ${payload.data.length}`);
|
||||
@@ -483,8 +483,8 @@ const consumer = await js.pullSubscribe("health", {
|
||||
|
||||
// Process historical and real-time messages
|
||||
for await (const msg of consumer) {
|
||||
const envelope = await smartreceive(msg);
|
||||
// envelope.payloads contains the list of payloads
|
||||
const env = await smartreceive(msg);
|
||||
// env.payloads contains the list of payloads
|
||||
// Each payload has: dataname, data, type
|
||||
msg.ack();
|
||||
}
|
||||
@@ -501,10 +501,10 @@ import json
|
||||
|
||||
# Device configuration handler
|
||||
def handle_device_config(msg):
|
||||
envelope = smartreceive(msg)
|
||||
env = smartreceive(msg)
|
||||
|
||||
# Process configuration from payloads
|
||||
for dataname, data, type in envelope["payloads"]:
|
||||
for dataname, data, type in env["payloads"]:
|
||||
if type == "dictionary":
|
||||
print(f"Received configuration: {data}")
|
||||
# Apply configuration to device
|
||||
@@ -523,7 +523,7 @@ def handle_device_config(msg):
|
||||
"device/response",
|
||||
[("config", config, "dictionary")],
|
||||
nats_url="nats://localhost:4222",
|
||||
reply_to=envelope.get("replyTo")
|
||||
reply_to=env.get("replyTo")
|
||||
)
|
||||
```
|
||||
|
||||
@@ -583,11 +583,11 @@ smartsend(
|
||||
const { smartreceive, smartsend } = require('./src/NATSBridge');
|
||||
|
||||
// Receive NATS message with direct transport
|
||||
const envelope = await smartreceive(msg);
|
||||
const env = await smartreceive(msg);
|
||||
|
||||
// Decode Base64 payload (for direct transport)
|
||||
// For tables, data is in envelope.payloads
|
||||
const table = envelope.payloads; // Array of objects
|
||||
// For tables, data is in env.payloads
|
||||
const table = env.payloads; // Array of objects
|
||||
|
||||
// User makes selection
|
||||
const selection = uiComponent.getSelectedOption();
|
||||
|
||||
Reference in New Issue
Block a user