33 lines
1.7 KiB
Markdown
33 lines
1.7 KiB
Markdown
# ⚙️ Functions & API
|
|
|
|
Plexus communicates primarily through WebSockets (Socket.io) for real-time interaction.
|
|
|
|
## 🔌 Socket Events
|
|
|
|
### 📥 Client to Server
|
|
- `join({ walletAddress, username })`: Register or login a user.
|
|
- `sendMessage({ channelId, walletAddress, content, txId })`: Send a message to a channel.
|
|
- `toggleReaction({ messageId, walletAddress, emoji })`: Toggle a reaction on a message.
|
|
- `updateUsername({ walletAddress, newUsername, txId })`: Change username (simulated cost).
|
|
- `getProfile(walletAddress)`: Fetch user profile and wall posts.
|
|
- `updateProfile({ walletAddress, bio, bannerColor })`: Update profile details.
|
|
- `createPost({ walletAddress, content })`: Post a message to the user's wall.
|
|
|
|
### 📤 Server to Client
|
|
- `userList(users)`: Broadcast the updated list of online/offline users.
|
|
- `newMessage(message)`: Broadcast a new message to all clients.
|
|
- `updateReactions({ messageId, reactions })`: Broadcast updated reactions for a message.
|
|
- `usernameUpdated({ username })`: Confirm a username change to the specific user.
|
|
- `profileData(data)`: Send requested profile data to a user.
|
|
- `profileUpdated(data)`: Confirm profile update.
|
|
- `postCreated(post)`: Confirm post creation.
|
|
- `error({ message })`: Send error messages to the client.
|
|
|
|
## 🌐 REST API
|
|
- `GET /api/channels`: List all available chat channels.
|
|
- `GET /api/messages/:channelId`: Fetch the last 100 messages and reactions for a channel.
|
|
|
|
## 🛠 Internal Logic
|
|
- **Username Authority**: The server validates and ensures unique usernames, appending suffixes if necessary.
|
|
- **Transaction Simulation**: The client simulates a 1.5s delay and a 5% failure rate for "blockchain" transactions.
|