A party-state service that coordinated authenticated HTTP actions and real-time WebSocket updates.
Part of the Dark Seal (Exalted) toolset
What This Is • What We Used It For • Layout • Security • License
Important
This repository is a public archive.
It is read-only, unmaintained, and preserved for reference only. Issues and pull requests are closed. Commit history was squashed into a single snapshot before publication, so this repository contains no development history.
WebsocketPT was the party-mode backend for Dark Seal (Exalted). It exposed an HMAC-protected HTTP API for party creation, membership, selection updates, and heartbeats, while a WebSocket server broadcast the latest party state to connected members. Party, member, and license-key records were stored in MongoDB, with active socket connections tracked in memory.
Stack: JavaScript ES modules, Node.js, Express, ws, Mongoose/MongoDB,
Docker, and Docker Compose.
Dark Seal clients used this service to create or join a party, associate a
licensed client with a display name and system information, and synchronize
champion, skin, and chroma selections. HTTP requests changed or queried the
persisted party state; WebSocket broadcasts pushed PARTY_STATE_UPDATE events
to party members. The service also handled membership activity, stale-party
cleanup, health reporting, and aggregate party statistics.
flowchart LR
Client["Dark Seal client"] -->|HMAC-signed party actions| API["Express API"]
Client <-->|Live party updates| Socket["WebSocket server"]
API --> Core["Party and license operations"]
Socket --> Core
Core <--> Database[("MongoDB")]
Core --> Registry["In-memory connection registry"]
Registry --> Socket
| Path | Contents |
|---|---|
websocketpt.js |
HTTP API, WebSocket server, persistence models, party operations, authentication middleware, and cleanup jobs. |
scripts/ |
Historical multi-party integration test; credentials and client identifiers must be supplied through environment variables. |
package.json |
Node.js package metadata and dependency declarations. |
Dockerfile and docker-compose.yml |
Historical container image and deployment definition. |
How this ran at the time — unsupported, may no longer work
[!WARNING] These steps reflect the environment as it existed when the project was active. Dependencies, APIs, and services referenced here may be dead. Nothing below is tested or supported.
The Node.js service expected MONGODB_URI and HMAC_SECRET in its environment.
WS_HOST, WS_PORT, STATS_API_KEY, DEBUG, and MONGO_POOL_SIZE adjusted
optional behavior. The integration test additionally required four
TEST_LICENSE_KEY_* values and four matching TEST_HWID_* values.
npm install
node websocketpt.jsThe retained Compose definition represented the historical container workflow and expected its declared external network and environment variables to exist.
docker compose build
docker compose upThe multi-party test was run separately after its required environment was configured.
node scripts/multi-party-test.jsCaution
This snapshot was scanned and scrubbed of credentials, keys, and private references before publication. Automated scanning is not perfect. Treat every endpoint, hostname, key, hash, or client identifier appearing in this code as dead and untrusted — do not attempt to use it.
Credentials found in the former development history must be considered compromised. Their revocation or rotation must be independently confirmed before this archive is published.
| State | Archived — read-only |
| Maintained | No |
| Accepting contributions | No |
| Support | None. Provided as-is, without warranty. |
Forking is permitted only under whatever license the archive owner confirms. Forks are entirely the forker's responsibility.
The package metadata declares the ISC license, but this repository does not contain a standalone license file. Confirm the intended licensing terms and add the corresponding license text before publication. Until then, do not assume permission to use, copy, modify, or distribute this code.