Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

WebSocket Communication in Go Programming

1. Introduction to WebSockets

WebSockets are a protocol that provides full-duplex communication channels over a single TCP connection. They are designed to be implemented in web browsers and web servers, but can be used by any client or server application. WebSockets enable real-time interaction between a client and a server with lower overheads compared to traditional HTTP polling.

2. Setting Up the Go Environment

Before we start, ensure that you have Go installed on your machine. You can download it from the official Go website. Once installed, set up your workspace by creating a directory for your Go projects.

mkdir websocket-go

cd websocket-go

3. Installing the Gorilla WebSocket Package

We will use the Gorilla WebSocket package, a popular library for WebSocket communication in Go. Install it using the following command:

go get github.com/gorilla/websocket

4. Creating a Basic WebSocket Server

Let's create a basic WebSocket server that listens for client connections and echoes any received message back to the client.

touch server.go

Open server.go and add the following code:

package main

import (
    "fmt"
    "net/http"
    "github.com/gorilla/websocket"
)

var upgrader = websocket.Upgrader{
    ReadBufferSize:  1024,
    WriteBufferSize: 1024,
}

func handleConnections(w http.ResponseWriter, r *http.Request) {
    ws, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
        fmt.Println(err)
        return
    }
    defer ws.Close()

    for {
        messageType, p, err := ws.ReadMessage()
        if err != nil {
            fmt.Println(err)
            return
        }
        if err := ws.WriteMessage(messageType, p); err != nil {
            fmt.Println(err)
            return
        }
    }
}

func main() {
    http.HandleFunc("/ws", handleConnections)
    fmt.Println("Server started on :8080")
    err := http.ListenAndServe(":8080", nil)
    if err != nil {
        fmt.Println(err)
    }
}

5. Running the WebSocket Server

To run the WebSocket server, execute the following command:

go run server.go

The server will start and listen for connections on port 8080.

6. Creating a WebSocket Client

Now, let's create a simple WebSocket client using HTML and JavaScript to connect to our WebSocket server and send messages.

touch client.html

Open client.html and add the following code:




    
    
    WebSocket Client


    

WebSocket Client