Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Task] Messaging API #2216

Open
5 tasks
weboko opened this issue Jan 21, 2025 · 0 comments
Open
5 tasks

[Task] Messaging API #2216

weboko opened this issue Jan 21, 2025 · 0 comments
Assignees

Comments

@weboko
Copy link
Collaborator

weboko commented Jan 21, 2025

Description

Implement the messaging API in js-waku; should be used in the Logos forum PoC and Qaku.

Currently, application developers using js-waku must navigate complex low-level protocols and implement their own strategies for message reliability, delivery confirmation, and missed message retrieval. This increases development overhead and hinders adoption, particularly for resource-constrained applications. There is a lack of a high-level, developer-friendly API that abstracts Waku protocols and provides reliable messaging functionality out of the box.

User Story

  • As a developer, I want to send and receive messages using a simple API, so that I don’t have to manage Waku protocols directly.
  • As a developer, I want the Messaging API to abstract core protocols, so that I can build applications without worrying about underlying protocol details.
  • As a developer, I want to retrieve past messages reliably using the API, so that users don’t miss important messages during temporary disconnections.
  • As a developer, I want the API to handle peer discovery and connection management automatically, so that I don’t have to implement these strategies myself.
  • As a developer, I want to use the API to confirm whether messages have been successfully delivered or are still pending, so that I can provide users with feedback on message status.
  • As a developer, I want the Messaging API to integrate store queries and service node redundancy, so that I can ensure message reliability in my application.
  • As a developer, I want to use a high-level sendMessage function with built-in reliability mechanisms, so that I can focus on building application logic rather than managing network stability.
  • As a user, I want messages to be delivered reliably even if my device is temporarily disconnected, so that I don’t miss any important communication.
  • As a developer, I want the API to support multiple connection strategies (e.g., redundant connections, light push, filter), so that I can optimize performance for different use cases.
  • As a developer, I want to receive detailed error logs and feedback from the API, so that I can debug and improve my application effectively.

Proposed Solution / Feature Design

Preliminary breakdown

Not possible before waku-org/pm#282 is done.

  • Adapter for the messages: Filter, Store, LightPush. Track propagation of the message.
  • Event driven API: error tracking, message state propagation, libp2p, peers, connectivity.
  • Health manager & reliability manager: re-iteration.
  • Recovery strategies: 0 connections, lost Filter nodes, Store nodes.
  • Error handling: light push failures, Store disconnects etc.

Optional: Diagram or Draft of Design

TBD

Notes

@weboko weboko self-assigned this Jan 21, 2025
@weboko weboko added this to Waku Jan 21, 2025
@weboko weboko moved this to Triage in Waku Jan 21, 2025
@weboko weboko changed the title Messaging API [Epic] Messaging API Jan 21, 2025
@weboko weboko changed the title [Epic] Messaging API [Epic js-waku] Messaging API Jan 21, 2025
@weboko weboko moved this from Triage to Priority in Waku Jan 21, 2025
@weboko weboko changed the title [Epic js-waku] Messaging API [Task] Messaging API Jan 24, 2025
@chair28980 chair28980 changed the title [Task] Messaging API Messaging API Feb 4, 2025
@weboko weboko changed the title Messaging API [Task] Messaging API Feb 4, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Priority
Development

No branches or pull requests

1 participant