Skip to content

WebSocket Events

RushChat uses WebSocket for real-time communication.

WebSocket Events Overview

Connection

Connection Address

ws://localhost:5001/ws

Or using HTTPS:

wss://your-domain.com/ws

Client → Server Events

user:join

User joins chat.

{
  "event": "user:join",
  "data": {
    "username": "string"
  }
}

user:login

User login.

{
  "event": "user:login",
  "data": {
    "username": "string",
    "password": "string"
  }
}

message:send

Send message.

{
  "event": "message:send",
  "data": {
    "channel_id": 1,
    "message": "string",
    "message_type": "text|image|system"
  }
}

typing:start

User starts typing.

{
  "event": "typing:start",
  "data": {
    "channel_id": 1
  }
}

typing:stop

User stops typing.

{
  "event": "typing:stop",
  "data": {
    "channel_id": 1
  }
}

channel:join

Join channel.

{
  "event": "channel:join",
  "data": {
    "channel_id": 1,
    "password": "string (optional)"
  }
}

channel:create

Create channel.

{
  "event": "channel:create",
  "data": {
    "name": "string",
    "is_private": true,
    "password": "string (optional)"
  }
}

admin:kick

Admin kicks user.

{
  "event": "admin:kick",
  "data": {
    "target_username": "string"
  }
}

admin:mute

Admin mutes user.

{
  "event": "admin:mute",
  "data": {
    "target_username": "string"
  }
}

admin:appoint

Admin appointment.

{
  "event": "admin:appoint",
  "data": {
    "target_username": "string",
    "admin_level": "A|B|C"
  }
}

Server → Client Events

user:joined

Notify user joined.

{
  "event": "user:joined",
  "data": {
    "username": "string"
  }
}

user:left

Notify user left.

{
  "event": "user:left",
  "data": {
    "username": "string"
  }
}

user:list

Send online user list.

{
  "event": "user:list",
  "data": {
    "users": ["username1", "username2"]
  }
}

message:receive

Receive new message.

{
  "event": "message:receive",
  "data": {
    "id": 1,
    "channel_id": 1,
    "username": "string",
    "message": "string",
    "message_type": "text|image|system",
    "created_at": "2024-01-01T00:00:00Z"
  }
}

typing:start

Someone is typing.

{
  "event": "typing:start",
  "data": {
    "username": "string",
    "channel_id": 1
  }
}

typing:stop

Someone stopped typing.

{
  "event": "typing:stop",
  "data": {
    "username": "string",
    "channel_id": 1
  }
}

channel:joined

Join channel successful.

{
  "event": "channel:joined",
  "data": {
    "channel_id": 1,
    "channel_name": "string"
  }
}

channel:list

Channel list updated.

{
  "event": "channel:list",
  "data": {
    "channels": [
      {
        "id": 1,
        "name": "string",
        "is_private": false
      }
    ]
  }
}

admin:action

Admin operation notification.

{
  "event": "admin:action",
  "data": {
    "action_type": "kick|mute|appoint",
    "admin_username": "string",
    "target_username": "string"
  }
}

error

Error message.

{
  "event": "error",
  "data": {
    "message": "string"
  }
}

Connection Management

Auto Reconnect

Client automatically handles disconnection and reconnection:

  • Detect disconnection
  • Automatically attempt reconnection
  • Restore session after reconnection

Heartbeat

Server periodically sends heartbeat packets to keep connection alive.