Web Sockets
Use send.WsUpgrade() to upgrade the connection to web sockets. routes.Route{Pattern: "GET /ws", Handler: welcome.View} package welcome
import (
"main/lib/core/clients"
"main/lib/core/receive"
"main/lib/core/send"
"time"
)
func View(client *clients.Client) {
alive := receive.IsAlive(client) // Tracks request status.
send.WsUpgrade(client) // Sends ws upgrade.
for *alive { // Loops until cancellation.
name := receive.Message(client) // Receives message.
send.Message(client, "Hello " + name) // Sends message.
time.Sleep(time.Second) // Sleeps for 1 second.
}
} Then consume the web socket on the client. <script lang="ts">
const messages: string[] = $state([]) // Creates reactive list of messages.
const socket = new WebSocket("/ws") // Connects to handler.
socket.addEventListener("message", function listen(event:MessageEvent) {
messages.push(event.data) // Appends incoming messages to the
// reactive list of messages for later use.
})
socket.send("Hello") // Sends message.
</script>
<Title text="Messages"/>
{#each messages as message, id (id)} <!-- Iterates the list of messages. -->
<div>{message}</div> <!-- Renders message. -->
{/each}