Skip to content

Stream conversations and messages

Stream new group chat and DM conversations

Listens to the network for new group chats and DMs. Whenever a new conversation starts, it triggers the provided callback function with a ConversationContainer object. This allows the client to immediately respond to any new group chats or DMs initiated by other users.

Node
const stream = await client.conversations.stream({
  onValue: (conversation) => {
    // Received a conversation
    console.log("New conversation:", conversation);
  },
  onError: (error) => {
    // Log any stream errors
    console.error(error);
  },
  onFail: () => {
    console.log("Stream failed");
  }
});
 
// Or use for-await loop
for await (const conversation of stream) {
  // Received a conversation
  console.log("New conversation:", conversation);
}

Stream new group chat and DM messages

This function listens to the network for new messages within all active group chats and DMs.

Whenever a new message is sent to any of these conversations, the callback is triggered with a DecodedMessage object. This keeps the inbox up to date by streaming in messages as they arrive.

Node
// stream all messages from conversations
const stream = await client.conversations.streamAllMessages({
  onValue: (message) => {
    // Received a message
    console.log("New message:", message);
  },
  onError: (error) => {
    // Log any stream errors
    console.error(error);
  },
  onFail: () => {
    console.log("Stream failed");
  }
});
 
// stream only group messages
const groupMessageStream = await client.conversations.streamAllGroupMessages({
  onValue: (message) => {
    console.log("New group message:", message);
  }
});
 
// stream only dm messages
const dmMessageStream = await client.conversations.streamAllDmMessages({
  onValue: (message) => {
    console.log("New DM message:", message);
  }
});
 
// Or use for-await loop
for await (const message of stream) {
  // Received a message
  console.log("New message:", message);
}

Handle stream failures

Node
// disable automatic reconnects
const stream = await client.conversations.streamAllMessages({
  retryOnFail: false,
  onValue: (message) => {
    console.log("New message:", message);
  }
});
 
// use stream options with retry configuration
const stream = await client.conversations.streamAllMessages({
  retryAttempts: 10,
  retryDelay: 20000, // 20 seconds
  onValue: (message) => {
    console.log("New message:", message);
  },
  onError: (error) => {
    console.error("Stream error:", error);
  },
  onFail: () => {
    console.log("Stream failed after retries");
  },
  onRestart: () => {
    console.log("Stream restarted");
  },
  onRetry: (attempt, maxAttempts) => {
    console.log(`Stream retry attempt ${attempt} of ${maxAttempts}`);
  },
});