Categorygithub.com/tofl/websocket
repositorypackage
0.0.0-20240202001540-ee0f59fe9c02
Repository: https://github.com/tofl/websocket.git
Documentation: pkg.go.dev

# README

Websocket

This project serves as a simple websocket server library following the websocket protocol as defined in RFC 6455. It's an exploratory project and shouldn't be used in a production environment.

Installation

go get github.com/tofl/websocket

API reference

The API reference can be viewed at pkg.go.dev/github.com/tofl/websocket.

Usage

To start a new websocket server, just use the NewServer function. It takes as parameters the address, the path and the onRead function.

The onRead function, defined by the library user, is where frames received by the server are managed.

A new frame can be created using the NewFrame function. The library exposes the Connection.Write method to send a frame to a given client and ConnectionPool.Broadcast to send a frame to all connected clients.

Example

package main

import "github.com/tofl/websocket"

func onMessage(c *websocket.Connection, cp *websocket.ConnectionPool, f websocket.Frame) {
	ack := websocket.NewFrame(true, 1, false, []byte("Message received"))
	c.Write(ack)

	frame1 := websocket.NewFrame(false, 1, false, []byte("Hello"))
	continuation := websocket.NewFrame(true, 0, false, []byte(" everyone"))

	cp.Broadcast(frame1)
	cp.Broadcast(continuation)
}

func main() {
	websocket.NewServer(":8080", "/ws", onMessage)
}