一、项目引入
-
项目结构很简单,只有3个文件,大家可以把这三个文件排版成这种格式,然后导入。
- 三个文件详见
步骤3
- 如果大家觉得下载太麻烦,那就去
步骤四
直接下载代码 https://gitee.com/yinleilei/GoWebsocket,记得把server.go
第四行"**/**/impl"
,改成你在mod.go
中设置的名字
- 三个文件详见
-
关于怎么用Goland新建一个已有的项目,请查看我这一篇 GoLand添加一个已有项目的相关配置
二、项目使用
1、根目录 GoWebsocket 下新建 go.mod 文件
- 由于我新建的是一个
Go Mosules ( vgo )
类型的项目,所以要在根目录GWebsocket
下加一个go.mod
文件 - go.mod 内容如下:定义项目的模块名称
module GoWebsocket
2、go build 构建项目
- 如果没创建go.mod文件就执行
go build
,报错如下:
go: cannot find main module; see 'go help modules'
-
go build
命令构建项目,在 GoLand添加一个已有项目的相关配置 已经设置了go第三方包自动导入
,所以可以看到已经成功引入了第三方扩展,如图:
-
大家同时可以看到 根目录
GoWebsocket
下生成了2
个新文件
,如图
go.sum
:标记每个依赖包的版本 【Go专家编程】一文搞懂go.sum工作机制
GoWebsocket.exe
:可执行文件
3、go run 入口文件,执行项目
go run server.go
命令启动项目
弹窗网络安全提示:选择允许访问
,如图
程序没报错
,没结束
,说明在执行中,如图
4、执行 client.html 文件
GoLang中选择 client.html 文件,选择一种浏览器打开,如图
浏览器打开后,点击操作按钮打开
,关闭
,发送
,打印效果,如图
5、其他
- 1)、mod.go 中定义的模块
GoWebsocket
,在server.go
中引入impl
下的所有文件中用到了
import (
"GoWebsocket/impl"
"net/http"
"time"
"github.com/gorilla/websocket"
)
- 2)、如果修改了服务端代码,请务必重启服务,重启命令为
go run 入口文件
go run server.go
三、初始文件代码
1、connection.go
package main
import (
"GoWebsocket/impl"
"net/http"
"time"
"github.com/gorilla/websocket"
)
var (
upgrader = websocket.Upgrader{
//允许跨域
CheckOrigin: func(r *http.Request) bool {
return true
},
}
)
func wsHandler(w http.ResponseWriter, r *http.Request) {
var (
wsConn *websocket.Conn
err error
data []byte
conn *impl.Connection
)
//Upgrade字段:websocket
if wsConn, err = upgrader.Upgrade(w, r, nil); err != nil {
return
}
if conn, err = impl.InitConnection(wsConn); err != nil {
goto ERR
}
/**
这个是发送心跳
*/
go func() {