Stream Methods
The stream system is used for real-time data streams. It has two main directions:
- listenData - Listen to data coming from the platform
- sendData - Send data to the platform
Core Concepts
StreamEmitter
When a stream is started, a StreamEmitter object is returned. You can listen to events and stop the stream through this object.
// StreamEmitter API
emitter.on(eventName, handler) // Listen to event, returns unsubscribe function
emitter.off(eventName, handler) // Stop listening to event
emitter.stop(reason) // Stop the stream
emitter.id // Stream ID
emitter.stream // Stream nameStream Events
| Event | Description |
|---|---|
data | When new data arrives |
stream.accepted | When the stream is accepted |
stream.started | When the stream starts |
stream.end | When the stream ends |
stream.error | When an error occurs |
error | Error (short form) |
end | End (short form) |
listenData
Starts listening to a stream. Receives real-time data from the platform.
const emitter = await gameTegra.listenData({
stream: 'game-events',
options: { roomId: 'room-123' }
})
// When data arrives
emitter.on('data', (payload) => {
console.log('New data:', payload)
})
// When stream starts
emitter.on('stream.started', (payload) => {
console.log('Stream started:', payload)
})
// On error
emitter.on('error', (err) => {
console.error('Stream error:', err)
})
// When stream ends
emitter.on('end', () => {
console.log('Stream ended')
})var emitter = await gameTegra.listenStreamData(
gameTegra.@params("stream", "game-events")
);
emitter.On("data", (payload) => {
Debug.Log($"New data: {payload}");
});
emitter.On("stream.started", (payload) => {
Debug.Log("Stream started");
});
// To stop the stream
await emitter.StopAsync("finished");var emitter = await gameTegra.listenData({
"stream": "game-events",
"options": { "roomId": "room-123" }
})
# Listen to data
emitter.on("data", func(payload):
print("New data: ", payload)
)
# When stream starts
emitter.on("stream.started", func(payload):
print("Stream started: ", payload)
)
# Stop the stream
await emitter.stop("finished")Parameters:
| Field | Type | Required | Description |
|---|---|---|---|
| stream | string | Yes | Stream name to listen to |
| channel | string | No | Alternative: channel name |
| name | string | No | Alternative: stream name |
| topic | string | No | Alternative: topic name |
| options | object | No | Additional stream-specific parameters |
Note: One of
stream,channel,name, ortopicfields can be used.
Return Type: StreamEmitter
sendData
Sends data to the platform. Starts a stream, pushes data and automatically closes it.
const result = await gameTegra.sendData({
stream: 'player-action',
payload: {
action: 'move',
x: 100,
y: 200
}
})await gameTegra.sendStreamData(
gameTegra.@params(
"stream", "player-action",
"payload", gameTegra.@params("action", "move", "x", 100, "y", 200)
)
);var result = await gameTegra.sendData({
"stream": "player-action",
"payload": {
"action": "move",
"x": 100,
"y": 200
}
})Parameters:
| Field | Type | Required | Description |
|---|---|---|---|
| stream | string | Yes | Target stream name |
| payload | object/array | No | Data to send |
| data | object/array | No | Alternative: data to send |
| message | object | No | Alternative: single message |
| messages | array | No | Alternative: multiple messages |
| autoStop | boolean | No | Automatically close stream after sending (default: true) |
| key | string | No | Stream key |
connectGame
Connects to a game stream. Shortcut for listenData.
const emitter = await gameTegra.connectGame('my-game-stream')
emitter.on('data', (payload) => {
console.log('Game data:', payload)
})var emitter = await gameTegra.connectToGameStream("my-game-stream");
emitter.On("data", (payload) => {
Debug.Log($"Game data: {payload}");
});var emitter = await gameTegra.connectGame("my-game-stream")
emitter.on("data", func(payload):
print("Game data: ", payload)
)Parameters:
| Field | Type | Required | Description |
|---|---|---|---|
| streamName | string | Yes | Name of the game stream to connect to |
Return Type: StreamEmitter
stopStream
Stops an active stream.
// Via emitter
emitter.stop('user_left')
// or via SDK
await gameTegra.stopStream(emitter)
// or with key
await gameTegra.stopListeningStream('stream-key')// Via emitter
await emitter.StopAsync("user_left");
// or via SDK
await gameTegra.stopStream();# Via emitter
await emitter.stop("user_left")
# or via SDK
await gameTegra.stopStream("stream-id", "user_left")getGyroscope
Listens to the device's gyroscope sensor data in real-time.
const emitter = await gameTegra.getGyroscope()
emitter.on('data', (gyroData) => {
console.log('Gyro:', gyroData)
// { alpha: 0.5, beta: -0.3, gamma: 0.1 }
})var emitter = await gameTegra.getGyroscope();
emitter.On("data", (gyroData) => {
Debug.Log($"Gyro: {gyroData}");
});var emitter = await gameTegra.getGyroscope()
emitter.on("data", func(gyro_data):
print("Gyro: ", gyro_data)
)Return Type: StreamEmitter - Continuously receives gyroscope data via the data event.
getAccelerometer
Listens to the device's accelerometer sensor data in real-time.
// Available in JS SDK and Godot onlyvar emitter = await gameTegra.getAccelerometer()
emitter.on("data", func(accel_data):
print("Accelerometer: ", accel_data)
)Return Type: StreamEmitter
Stream Lifecycle
1. listenData() is called
-> Stream request is sent to the platform
2. "ready" event arrives
-> Promise resolves, StreamEmitter is returned
3. "stream.accepted" -> Stream accepted
4. "stream.started" -> Stream active, data starts flowing
5. "data" -> Triggered for each new data packet
6. Termination:
- emitter.stop() -> "end" event
- Closed by platform -> "stream.end" event
- On error -> "stream.error" / "error" event