go语言中想同时开http服务和监听tcp端口怎么做

Python022

go语言中想同时开http服务和监听tcp端口怎么做,第1张

func main() {

m := martini.Classic()

m.Get("/device/:serialnumber" , func(params martini.Params) string {

detail := GetDeviceState(params["serialnumber"])

result , _ := json.Marshal(detail)

return string(result)

})

m.Get("/device/ctrl/:serialnumber/:state" , func(params martini.Params) string {

detail := DeviceStateUpdate(params["serialnumber"] , params["state"])

result , _ := json.Marshal(detail)

return string(result)

})

1、首先使用一个公共的端口作为监听,让HTTP和HTTPS服务分别监听在各自的端口上。

2、其次在公共端口服务区分这是HTTP请求还是HTTPS请求。

3、最后各自转发到所服务的监听即可。

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

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

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

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

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

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