go语言聊天室实现(六)创建HTTP连接,并升级为长连接

Python011

go语言聊天室实现(六)创建HTTP连接,并升级为长连接,第1张

我们在mian函数中,首先初始化配置文件,然后新建http连接。

这个连接创建之后,监听服务器的9999端口。如果url的路径后缀为 "/ws",就转发到ws/ws.go中的IndexHandler方法中。

这个方法中首先我们创建一个websocket的Upgrader实例,然后我们使用Upgrader的upgrade方法来升级一下我们的连接为长连接。

升级完成之后会返回一个*websocket.Conn的连接,我们之后所有的关于连接的操作,都是基于该conn的。

在该连接完成之后,我们将连接存放到一个名为Client的map中,以便之后管理更为方便。

之后,我们启动一个goroutine来读取连接中发送的信息内容,再根据内容进行相应的操作。

在做测试的时候,需要模拟HTTP server的handle函数直接调用:

就不用通过发送curl命令,而是直接调用handler函数的方式;这样就需要手动构造出一个http.ResponseWriter和http.Request,然后调用Handler函数。

好在golang自带的"net/http/httptest"包就有这个功能:

如果使用"github.com/gorilla/mux"的router包想使用Vars可以这么设置:

然后在Handler函数里,就能使用: