Skip to content

这里需防止客户端异常断开链接导致groutine异常程序崩溃 #27

@cocoyes

Description

@cocoyes

func (c *Client) Read() {
go func() {
defer func() {
// 当 goroutine 退出时触发断开连接
Manager.DisConnect <- c
}()

	for {
		messageType, _, err := c.Socket.ReadMessage()
		if err != nil {
			// 检查是否是 WebSocket 连接正常关闭的错误
			if websocket.IsCloseError(err, websocket.CloseGoingAway, websocket.CloseNormalClosure, websocket.CloseNoStatusReceived) {
				return
			}
			// 其他错误或网络问题也应该退出读取循环
			return
		}

		// 您可以根据需要处理不同类型的消息
		if messageType == websocket.PingMessage {
			// 对 Ping 消息做出反应,例如发送 Pong 消息
			_ = c.Socket.WriteMessage(websocket.PongMessage, nil)
		}
	}
}()

}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions