watch-websocket

command module
v0.0.0-...-7f9e955 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 16, 2022 License: ISC Imports: 8 Imported by: 0

README

File Watcher & Websocket

A file watcher and websocket server written in Go.

Basic premise is that you want to watch for file system changes and inform a Javascript client of the update. The JS client could then perform a reload of the page - i.e. a laymans hot reload.

There are probably better solutions but I needed something lightweight without using webpack.

The file watcher runs on the current working directory and the websocket on ws://127.0.0.1:12345/ws

Install

git clone https://github.com/dozyio/watch-websocket
cd watch-websocket
go install

Running

Run watch-websocket from the path you want to watch changes in.

./watch-websocket

JS Client

Sample javascript client

<script>
var socket = new WebSocket("ws://127.0.0.1:12345/ws");
var heartbeat;

function wsHeartbeat() {
    socket.send('!');
}

function reload() {
    window.location.reload(true);
}

socket.onopen = function(event) {
    console.log('WS Connected');
    wsHeartbeat();
    heartbeat = setInterval(wsHeartbeat, 5000);
};

socket.onmessage = function(event) {
    console.log(`WS message ${event.data}`);
    if (event.data === 'reload') {
        // Add a small delay to allow files to save and other processes
        // to run (i.e. tailwind JIT)
        setTimeout(reload, 200);
    }
};

socket.onclose = function(event) {
    console.log('WS connection closed', event);
    clearInterval(heartbeat);
};

socket.onerror = function(error) {
    console.log(`WS error ${error.message}`);
    clearInterval(heartbeat);
};
</script>

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL