<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>WebSocket | Dylan Chiang</title><link>https://dylanchiang-dev.github.io/en/tags/websocket/</link><atom:link href="https://dylanchiang-dev.github.io/en/tags/websocket/index.xml" rel="self" type="application/rss+xml"/><description>WebSocket</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-US</language><lastBuildDate>Sat, 03 Oct 2026 00:00:00 +0000</lastBuildDate><image><url>https://dylanchiang-dev.github.io/media/icon_hu_982c5d63a71b2961.png</url><title>WebSocket</title><link>https://dylanchiang-dev.github.io/en/tags/websocket/</link></image><item><title>ShellMate: A Browser-Based SSH Workbench</title><link>https://dylanchiang-dev.github.io/en/project/shellmate/</link><pubDate>Sat, 03 Oct 2026 00:00:00 +0000</pubDate><guid>https://dylanchiang-dev.github.io/en/project/shellmate/</guid><description>&lt;p>ShellMate is a Web SSH workbench I developed for managing multiple hosts. It brings host settings, interactive terminals, and reusable commands into a deployable single-machine prototype.&lt;/p>
&lt;h2 id="my-work">My work&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Live terminal integration&lt;/strong>: Connected React, TypeScript, and xterm.js to Node.js/ssh2 through bidirectional WebSocket communication.&lt;/li>
&lt;li>&lt;strong>Hosts and tabs&lt;/strong>: Implemented host editing, grouping, and terminal-tab switching.&lt;/li>
&lt;li>&lt;strong>Command snippets&lt;/strong>: Organized reusable commands into groups and sent them to the active terminal.&lt;/li>
&lt;li>&lt;strong>Basic access controls&lt;/strong>: Integrated login, JWT API authentication, password hashing, and encrypted host-password storage.&lt;/li>
&lt;li>&lt;strong>Backend structure&lt;/strong>: Separated authentication, host data, snippets, SSH sessions, and WebSocket handlers, with clearer connection errors.&lt;/li>
&lt;li>&lt;strong>Deployment tradeoffs&lt;/strong>: Supplied Docker/Compose deployment and lightweight JSON storage without claiming large-scale multi-user capability.&lt;/li>
&lt;/ul>
&lt;h2 id="architecture">Architecture&lt;/h2>
&lt;figure>&lt;img src="https://dylanchiang-dev.github.io/project/shellmate/architecture.png"
alt="ShellMate host management, terminal interaction, WebSocket backend, and SSH connections.">&lt;figcaption>
&lt;p>A conceptual diagram containing no real hosts, addresses, accounts, or credentials. It does not expose a live SSH service.&lt;/p>
&lt;/figcaption>
&lt;/figure>
&lt;h2 id="scope">Scope&lt;/h2>
&lt;p>This project demonstrates frontend, realtime communication, backend, and deployment integration. Basic safeguards are not independent security certification; finer permissions and scalable multi-user storage remain extension areas.&lt;/p>
&lt;p>
&lt;/p></description></item></channel></rss>