» Go:使用Socket.IO创建Web Chat App在线聊天应用 » 2. 开发 » 2.1 初始版本

初始版本

创建模块

执行 go mod init 命令,指定模块路径。

go mod init literank.com/webchat

其结果:

go: creating new go.mod: module literank.com/webchat

该命令会创建一个 go.mod 文件,其用于追踪管理项目依赖。

安装依赖框架

安装 socket.io 框架:

go get -u github.com/zishang520/socket.io/v2

此处不使用 github.com/googollee/go-socket.io 是因为其目前(2024年5月)只支持 1.4 版本 Socket.IO client。
而 Socket.IO 最新版本是 4.x

该命令会更新 go.mod 文件并在项目中自动创建一个 go.sum 文件。

创建 main.go:

package main

import (
	"fmt"
	"net/http"

	"github.com/zishang520/engine.io/v2/types"
	"github.com/zishang520/socket.io/v2/socket"
)

const port = 4000

func main() {
	// CORS
	opts := &socket.ServerOptions{}
	opts.SetCors(&types.Cors{Origin: "*"})

	io := socket.NewServer(nil, opts)
	io.On("connection", func(clients ...any) {
		client := clients[0].(*socket.Socket)
		fmt.Println("A user connected:", client.Id())
	})

	http.Handle("/socket.io/", io.ServeHandler(nil))
	fmt.Printf("Chat server serving at localhost:%d...\n", port)
	http.ListenAndServe(fmt.Sprintf(":%d", port), nil)
}

如下运行程序:

go run main.go

将得到类似如下信息:

Chat server serving at localhost:4000...

你的 chat 服务器已经在 4000 端口跑起来了。