初始版本
创建模块
执行 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 端口跑起来了。
Loading...
> 此处输出代码运行结果