Skip to content

Stream Methods

Real-time data streaming between the game and the backend.

StreamEmitter

When a stream starts, a StreamEmitter is returned. Use it to subscribe to events and stop the stream.

js
emitter.on(eventName, handler)   // subscribe, returns unsubscribe fn
emitter.off(eventName, handler)  // unsubscribe
emitter.stop(reason)             // stop the stream
emitter.id                       // stream ID
emitter.stream                   // stream name
EventDescription
dataNew data arrived
stream.acceptedStream accepted by server
stream.startedStream started
stream.endStream ended

sendData

Sends data over the active game stream.

js
gametegra.sendData({ action: 'move', x: 10, y: 20 })
csharp
await gametegra.sendData(gametegra.@params("action","move","x",10,"y",20));
gdscript
var result = await gametegra.sendData({ 'action': 'move', 'x': 10, 'y': 20 })

Parameters:

NameTypeRequiredDescription
paramsobjectYesData payload to send.

Response:

json
{
  "onClientSuccess": true,
  "onHostSuccess": true,
  "data": {
    "success": true
  },
  "errorMessage": null
}

listenData

Starts listening to incoming game stream data. Returns an Emitter.

js
const emitter = await gametegra.listenData()
emitter.on('data', (payload) => { console.log(payload) })
csharp
var emitter = await gametegra.listenData(true);
emitter.OnData += (payload) => Debug.Log(payload);
gdscript
var emitter = await gametegra.listenData()
emitter.on('data', func(payload): print(payload))

Parameters:

NameTypeRequiredDescription
paramsobjectNoOptional filter/options for the stream.

Response:

json
{
  "eventType": "data",
  "payload": {
    "action": "move",
    "x": 10,
    "y": 20
  }
}

connectGame

Connects to a named game stream and returns an Emitter for real-time events.

js
const emitter = await gametegra.connectGame('game-events')
emitter.on('data', (e) => handleEvent(e))
csharp
var emitter = await gametegra.connectGame("game-events");
emitter.OnData += HandleEvent;
gdscript
var emitter = await gametegra.connectGame('game-events')
emitter.on('data', func(e): handle_event(e))

Parameters:

NameTypeRequiredDescription
streamNamestringYesName of the game stream to connect to.
optionsobjectNoOptional stream configuration.

Response:

json
{
  "eventType": "data",
  "payload": {
    "type": "player_joined",
    "userId": "d2f2e862-7db2-46ce-9bc7-469739fcb618"
  }
}

stopStream

Stops an active stream by its channel key.

js
await gametegra.stopStream('room-chat-lobby')
csharp
await gametegra.stopStream();
gdscript
await gametegra.stopStream('room-chat-lobby')

Parameters:

NameTypeRequiredDescription
channelKeystringYesThe channel key returned when the stream was started.

Response:

json
{
  "onClientSuccess": true,
  "onHostSuccess": true,
  "data": {
    "success": true
  },
  "errorMessage": null
}

getGyroscope

Starts streaming gyroscope sensor data from the device.

js
const gyro = await gametegra.getGyroscope({ normalize: true })
gyro.on('data', (d) => { console.log(d.x, d.y, d.z) })
csharp
var gyro = await gametegra.getGyroscope();
gyro.OnData += (d) => UpdateRotation(d);
gdscript
var gyro = await gametegra.getGyroscope({ 'normalize': true })
gyro.on('data', func(d): update_rotation(d))

Parameters:

NameTypeRequiredDescription
normalizebooleanNoWhen true, returns values in degrees instead of radians.

Response:

json
{
  "eventType": "data",
  "payload": {
    "x": 0.012,
    "y": -0.004,
    "z": 0.003
  }
}

getAccelerometer

Starts streaming accelerometer sensor data from the device.

js
const accel = await gametegra.getAccelerometer()
accel.on('data', (d) => { console.log(d.x, d.y, d.z) })
csharp
var accel = await gametegra.getAccelerometer();
accel.OnData += (d) => UpdateAccel(d);
gdscript
var accel = await gametegra.getAccelerometer()
accel.on('data', func(d): update_accel(d))

Response:

json
{
  "eventType": "data",
  "payload": {
    "x": 0.01,
    "y": 0.98,
    "z": 0.05
  }
}