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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 💻 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.