You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
2.9 KiB

5 years ago
# 💻 ws-term
Websockets are made for the web. So what better way to test/develop/debug your websocket than to use a web-app? ws-term is a web-app written in JavaScript. It stores your settings and history locally and you'll never be forced to create an account.
![image-20200115031219391](img/screenshot.png)
## 📖 Quick-guide
1. Download ws-term.html
2. Open it in a text editor and configure a couple settings (L12 - L21)
```javascript
// Address to your websocket. Kind of like an http address
let address = "wss://echo.websocket.org/"
// (array of) ws subprotecol(s) you want to negotiate. false to disable subprotecols
let subProtocol = false
// Retry connection after X ms. Set to false to disable.
let autoReconnect = 1000
// pre-configured history items. You can use these as cheap-ass shortcuts
history.items = []
```
3. Open the HTML file in a browser.
The status will be indicated by the colored tab at the top-left corner.
**Green:**connected
**Red:**disconnected
**Gray:**not yet connected
Terminal messages prefixed by [ws-term] are system messages, and not websocket messages.
## 🚆 Roadmap
**Right now it's pretty barebones:**
- [x] Send and receive websocket messages
- [x] Status indication (connected/disconnected)
- [x] Auto-reconnect support
- [x] Command history (⬆ / ⬇)
- [x] easy configuration (four variables at the top of the document)
- [x] Websocket sub-protocol negotiation support
- [x] A theme I can bear to watch after dark 👀 …
**But there'll be more before the v1.0 release 🏁 :**
- [ ] Port app over to VueJS
- [ ] Provide either terminal tabs, or a t-mux-like interface (or both...)
- [ ] Provide configuration options in the app
- [ ] Store sessions/config locally in an exportable way (LocalStorage?)
- [ ] Session settings like address, port, auto-reconnect time, history and terminal buffer-size. Extendable
- [ ] Session state (previously received/sent messages)
- [ ] Project state (Active terminals, tab order etc)
- [ ] Application state (Active projects)
- [ ] implement PWA to support offline usage
**Maybe in the near future™ **
- Technical socket stats like latency, supported sub-protocols, tls details, bandwidth/rate etc.
- Binary support?.. (blob)
- Frame details
- See and manage ping/pong frames
- Frame type.
- Stats like; corresponding protocol, size, etc
- Further integration for popular sub-protocols like WAMP, XMPP, DRP etc.
- A way to act as proxy. Allow app to use websocket, while maintaining insight in messages/stats. Might be in the form of (Open)SaaS or desktop app.
- Team / collab development features (OpenSaaS)
- …?
## 💚 Help me out
Right now I'm the sole developer, there's no denying that. But you have the power to change this!
Do you have a great idea or improvement? Drop a message in the issue's and I'll try to get you started. Or you can check if there are any existing issues that tickle your fancy.