代码之家  ›  专栏  ›  技术社区  ›  Eric

gorilla-websocket-关闭处理程序链

  •  0
  • Eric  · 技术社区  · 2 年前

    在大猩猩网络套接字中, websocket.Conn 结构有一个方法 SetCloseHandler() ,它设置了连接的关闭处理程序。
    如果传递的处理程序是 nil ,它使用默认的处理程序。

    我不想保留默认处理程序,而是在默认处理程序之前或之后做一些其他事情。

    又称作处理程序链,例如一些方法,如:

    • prependCloseHandler(h)
      其在处理程序链的开始处添加处理程序。
    • appendCloseHandler(h)
      其在处理机链的末端添加一个处理机。

    然后将按顺序执行链中的每个处理程序。

    有没有办法做到这一点, 没有 将默认处理程序作为我的新处理程序的一部分?

    谢谢

    0 回复  |  直到 2 年前
        1
  •  2
  •   Cerise Limón    2 年前

    该包不提供用于预处理程序或附加的处理程序的直接机制 close message 。将此功能用作您功能的启动程序:

    closeHandler := conn.CloseHandler()
    conn.SetCloseHandler(func(code int, text string) error {
        // Add your code here ...
        err := closeHandler(code, text)
        // ... or here.
        return err
    })
    

    请注意,关闭处理程序是在从对等端接收到关闭消息时调用的,而不是在连接关闭时调用的。大多数应用程序都应该使用默认处理程序。