golang+vue3+websocket 实时推送首页数据或者站内信
  Eo7GKm3ms3Sh 2023年11月02日 64 0

 

Web socket 长链接。实时推送下单任务数据首页展示

客户端与后端建立连接。实时接受数据回显到页面。

过程:

客户端接到数据后做两件事

  • 数据页面回显
  • 告诉后端,我接受到了,再次发送新的数据

话不多说上代码

websocket包

go get github.com/gorilla/websocket
var (
	upgrader = websocket.Upgrader{
		ReadBufferSize:  0,
		WriteBufferSize: 0,
		CheckOrigin: func(r *http.Request) bool {
			return true
		},
	}
)

// 接口 客户端与这个接口建立连接
// GetDashBoardData
func (dbh *DashBoardHandler) GetDashBoardData(c echo.Context) error {

	ws, err := upgrader.Upgrade(c.Response(), c.Request(), nil)
	if err != nil {
		logger.RLog.Error(fmt.Sprintf("websocket connection failed "), zap.Error(err))
		return c.JSON(http.StatusOK, _system.WebSocketConnectionErr)
	}
	defer ws.Close()

	for {
		// write
		err = ws.WriteMessage(websocket.TextMessage, getDashboardData())
		if err != nil {
			logger.RLog.Error("websocket write failed")
			return c.JSON(http.StatusOK, _system.WebWriteErr)
		}
		// read
		_, msg, err := ws.ReadMessage()
		if err != nil {
			logger.RLog.Error("websocket read failed")
			return nil
		}
		//logger.RLog.Info(fmt.Sprintf("------------ msg: %v", string(msg)))
		if string(msg) == "success" {
			//logger.RLog.Info("------------------ 继续发送数据 ---------------")
			err = ws.WriteMessage(websocket.TextMessage, getDashboardData())
			if err != nil {
				logger.RLog.Error("websocket write failed")
				return c.JSON(http.StatusOK, _system.WebWriteErr)
			}
		}
	}
}

func getDashboardData() []byte {
  
  // 从数据中心拿数据
}

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
Eo7GKm3ms3Sh
最新推荐 更多

2024-05-31