golang 检查网络状态是否正常

package main

import (
	"fmt"
	"os/exec"
	"time"
)

func NetWorkStatus() bool {
	cmd := exec.Command("ping", "baidu.com", "-c", "1", "-W", "5")
	fmt.Println("NetWorkStatus Start:", time.Now().Unix())
	err := cmd.Run()
	fmt.Println("NetWorkStatus End  :", time.Now().Unix())
	if err != nil {
		fmt.Println(err.Error())
		return false
	} else {
		fmt.Println("Net Status , OK")
	}
	return true
}

func main() {
	fmt.Println("Hello ", NetWorkStatus())
}

运行结果:

Start: 1525266343

End: 1525266343

Net Status , OK
Hello,  true
Golang 中,可以使用 `net/http` 包提供的 `http.ResponseWriter` 和 `http.Request` 对象来处理 WebSocket 连接。 要检查 WebSocket 连接状态,可以使用 `http.ResponseWriter` 对象的 `CloseNotify()` 方法。该方法返回一个 `chan bool` 类型的通道,当客户端关闭连接时,该通道将被关闭。我们可以在服务器端通过监听该通道来检查 WebSocket 连接状态。 下面是一个使用 `CloseNotify()` 方法检查 WebSocket 连接状态的示例代码: ```go func serveWebSocket(w http.ResponseWriter, r *http.Request) { // 升级 HTTP 连接为 WebSocket 连接 conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Println("upgrade error:", err) return } defer conn.Close() // 监听连接关闭事件 closeChan := make(chan bool) go func() { select { case <-closeChan: // 连接已关闭 log.Println("connection closed") } }() conn.SetCloseHandler(func(code int, text string) error { closeChan <- true return nil }) // 处理 WebSocket 消息 for { _, message, err := conn.ReadMessage() if err != nil { log.Println("read error:", err) closeChan <- true break } log.Printf("recv: %s\n", message) } } ``` 在上面的代码中,我们首先升级 HTTP 连接为 WebSocket 连接,然后创建一个通道 `closeChan` 来监听连接关闭事件。 在 `conn.SetCloseHandler()` 方法中,我们定义了一个回调函数来处理连接关闭事件。当客户端关闭连接时,该回调函数会将 `closeChan` 通道关闭,从而触发连接关闭事件。 在主循环中,我们使用 `conn.ReadMessage()` 方法读取客户端发送的消息。如果读取失败,说明连接已关闭,我们也需要将 `closeChan` 通道关闭,从而触发连接关闭事件。 以上就是一个简单的使用 `CloseNotify()` 方法检查 WebSocket 连接状态的示例代码。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FREELANCER__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值