Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/spacingbat3/discord-ipc-proxy
A tool to analyze the Discord's IPC/WebSocket communication between server and client.
https://github.com/spacingbat3/discord-ipc-proxy
arrpc betterdiscord discord discord-ipc discord-websocket
Last synced: 3 months ago
JSON representation
A tool to analyze the Discord's IPC/WebSocket communication between server and client.
- Host: GitHub
- URL: https://github.com/spacingbat3/discord-ipc-proxy
- Owner: SpacingBat3
- License: isc
- Created: 2023-03-04T22:25:10.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2024-02-06T15:32:46.000Z (12 months ago)
- Last Synced: 2024-05-01T14:04:59.853Z (9 months ago)
- Topics: arrpc, betterdiscord, discord, discord-ipc, discord-websocket
- Language: TypeScript
- Homepage:
- Size: 34.2 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
- License: LICENSE
Awesome Lists containing this project
README
# discord-ipc-proxy
A tool to analyze the Discord's IPC/WebSocket communication between server and
client. Acts as a middleware between an application (browser, game) and Discord.## Usage
1. Clone this repo.
2. `npm i` to fetch all needed dependencies.
3. `npm start` to launch proxy.
4. Launch Discord. It shouldn't be launched **before** launching proxy.The proxy will periodically output to its STDOUT a JSON-formatted messages about
the communication between Discord IPC/WS servers and applications connecting to
them. This can be used by 3rd-party software to visualize it in more
human-readable way (GUI, colorized CLI).## About
This package was designed to help with the development of Discord WebSocket/IPC
protocol reimplementations, trying to create a universal bridge that passes
entire communication to the another client or server. A diagram showing how it
should initialize looks as below:```mermaid
sequenceDiagram
participant OS as Operating system
actor C as Browser/Application
actor B as IPC Bridge
actor S as Discord
activate OS;
activate B;
critical setup server
B->>OS: Initialize server, reserve port/path.
option all in use or taken
B--XB: Throw error, clean-up
B--XOS: End process life
end
activate S;
S->>OS: Initialize server, reserve port/path.
C->>B: (Open connection)
activate C;
critical setup client
B->S: (Open connection, reuse params/origin)
option server unavailable
B->B: "Null proxying" (receives messages but doesn't proxy them)
B--XOS: End process life
option closure by Discord
S->>B: Close with "n" code
B->>C: Close with "n" code
option closure by client
C->>B: Close with "n" code
B->>S: Close with "n" code
end
deactivate C;
deactivate S;
deactivate B;
deactivate OS;
```