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