chat

command
v0.25.0 Latest Latest
Warning

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

Go to latest
Published: Aug 26, 2026 License: Apache-2.0 Imports: 31 Imported by: 0

README

Chat

An example chat application.

%%{init: {"flowchart": {"defaultRenderer": "elk"}} }%%
graph TD
    %% Nodes.
    github.com/RealLifeGlobal/weaver/Main(weaver.Main)
    github.com/RealLifeGlobal/weaver/examples/chat/ImageScaler(chat.ImageScaler)
    github.com/RealLifeGlobal/weaver/examples/chat/LocalCache(chat.LocalCache)
    github.com/RealLifeGlobal/weaver/examples/chat/SQLStore(chat.SQLStore)

    %% Edges.
    github.com/RealLifeGlobal/weaver/Main --> github.com/RealLifeGlobal/weaver/examples/chat/ImageScaler
    github.com/RealLifeGlobal/weaver/Main --> github.com/RealLifeGlobal/weaver/examples/chat/LocalCache
    github.com/RealLifeGlobal/weaver/Main --> github.com/RealLifeGlobal/weaver/examples/chat/SQLStore

How to Run Locally

First, run a local MySQL instance and initialize it with chat.sql. We recommend using Docker for this:

# Run the MySQL instance.
$ docker run \
      --rm \
      --detach \
      --name mysql \
      --env MYSQL_ROOT_PASSWORD="password" \
      --env MYSQL_DATABASE="chat" \
      --volume="$(realpath chat.sql):/app/chat.sql" \
      --publish 127.0.0.1:3306:3306 \
      mysql

# Wait about ten seconds for the MySQL instance to start. Then, initialize the
# chat database with chat.sql.
$ docker exec mysql sh -c "mysql --password=password < /app/chat.sql"

Next, update the db_uri field in weaver.toml to point to your MySQL instance. If you used the Docker commands above, the default value of db_uri should already point to your database. You don't have to change anything.

Finally, run the application.

$ go build .

# Run the application in a single process.
$ weaver single deploy weaver.toml

# Run the application in multiple processes.
$ weaver multi deploy weaver.toml

How to Run on Kubernetes

First, run a MySQL instance in your Kubernetes cluster and initialize it with chat.sql. We recommend using mysql.yaml for this:

$ kubectl apply -f mysql.yaml

Next, update the db_uri field in weaver.toml to point to your MySQL instance. If you're using mysql.yaml, then you should update the SQLStore section of weaver.toml to have the following contents:

["github.com/RealLifeGlobal/weaver/examples/chat/SQLStore"]
db_driver = "mysql"
db_uri = "root:password@tcp(mysql:3306)/chat"

Then, update the repo field in kube_deploy.yaml with the Docker repository where the chat application will be uploaded. For example, if your Docker Hub username is myusername, you can update the to the following:

repo: docker.io/myusername/

listeners:
- name: chat
  public: true

See weaver kube deploy --help for more information on the repo field.

Finally, deploy the application using weaver kube.

$ go build .
$ kubectl apply -f $(weaver kube deploy kube_deploy.yaml)

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