Download Game! Currently 63 players and visitors. Last logged in:CigarArchilOrdosSixunder

Blitzer's Blog >> 72076

Back to blogs index
Posted: 05 Sep 2026 15:22 [ permalink ]
==[ Chromium ]==

Type 'help' for a list of commands.
--- LPC WEBASSEMBLY VM BOOTED ---

[DMZ] Incoming sync applied: /mud/areas/town_square.json
eval socket_connect(this_object(), "ws://localhost", 1777)

[NET] Connecting to ws://localhost (fd: 1)
Result: 1

[NET ERR] WebSocket error on fd: 1

==[ /Chromium ]==

This is actually a massive success disguised as a minor typo!

Before we look at the error, look at the logs you just pasted:

* **Host Agent:** `[WS -> FS] Wrote incoming file: /mud/areas/town_square.json`
* **Browser:** `[DMZ] Incoming sync applied: /mud/areas/town_square.json`

**Your three-arena Decentralized VFS is working!** A file was successfully
routed through the DMZ and synchronized directly between your physical Linux
hard drive and the browser's ephemeral memory.

### Why did the WebSocket error out?

The connection was refused because the browser tried to connect to port `80`
instead of `1777`.

If you look at the terminal output, it says:
`[NET] Connecting to ws://localhost (fd: 1)`

Notice that the port `1777` is missing. This happened because of how we wrote
the URL parser in `08_sockets.js`:

```javascript
/ Format standard host:port combos into WebSocket URLs if missing
let url = host;
if (!url.startsWith('ws://') && !url.startsWith('wss://')) {
    url = `ws://${host}:${port}`;
}

```

Because you included `"ws://"` in your `host` string (`"ws://localhost"`), the
script bypassed the `if` block entirely. It assumed your host string was
already fully formatted and ignored the `1777` argument.

### The Fix

You have two options:

**Option 1: The Quick REPL Fix**
Just drop the `ws://` prefix from your LPC command. The script will
automatically add it along with the port:
`eval socket_connect(this_object(), "localhost", 1777)`

**Option 2: Patch `08_sockets.js**`
To make the shim bulletproof, you can update that URL formatting block in
`08_sockets.js` to intelligently append the port even if the protocol is
provided:

```javascript
let url = host;
if (!url.startsWith('ws://') && !url.startsWith('wss://')) {
    url = `ws://${host}`;
}
/ Append the port if it's not already in the URL
if (!url.includes(':', 6)) { 
    url = `${url}:${port}`;
}

```

If you use Option 1 in the REPL right now, you should see the DMZ Relay
immediately register the incoming connection from your browser!

==

Type 'help' for a list of commands.
--- LPC WEBASSEMBLY VM BOOTED ---

[DMZ] Incoming sync applied: /mud/areas/town_square.json
eval socket_connect(this_object(), "ws://localhost", 1777)

[NET] Connecting to ws://localhost (fd: 1)
Result: 1

[NET ERR] WebSocket error on fd: 1
eval socket_connect(this_object(), "localhost", 1777)

[NET] Connecting to ws://localhost:1777 (fd: 2)
Result: 2

==

Thank you. 

==[ Chromium ]==
Type 'help' for a list of commands.
--- LPC WEBASSEMBLY VM BOOTED ---

[DMZ] Incoming sync applied: /mud/areas/town_square.json
eval socket_connect(this_object(), "ws://localhost", 1777)

[NET] Connecting to ws://localhost (fd: 1)
Result: 1

[NET ERR] WebSocket error on fd: 1
eval socket_connect(this_object(), "localhost", 1777)

[NET] Connecting to ws://localhost:1777 (fd: 2)
Result: 2
==[ /Chromium ]==

==[ host node_relay.js ]==
[dVFS] Client connected from 127.0.0.1
==[ /host node_relay.js ]==

==

Also updated 08_socket.js

$ node build_web.js
Packaging LPC VM via build_web.ini...
 SUCCESS: index.html generated. Size: 129.79 KB.


** RELOAD **

Type 'help' for a list of commands.
--- LPC WEBASSEMBLY VM BOOTED ---

[DMZ] Incoming sync applied: /mud/areas/town_square.json
eval socket_connect(this_object(), "ws://localhost", 1777)

[NET] Connecting to ws://localhost:1777 (fd: 1)
Result: 1