• 集成第三方应用

    集成第三方应用

    beego 支持第三方应用的集成,用户可以自定义 http.Handler,用户可以通过如下方式进行注册路由:

    1. beego.RouterHandler("/chat/:info(.*)", sockjshandler)

    sockjshandler 实现了接口 http.Handler

    目前在 beego 的 example 中有支持 sockjs 的 chat 例子,示例代码如下:

    1. package main
    2. import (
    3. "fmt"
    4. "github.com/astaxie/beego"
    5. "github.com/fzzy/sockjs-go/sockjs"
    6. "strings"
    7. )
    8. var users *sockjs.SessionPool = sockjs.NewSessionPool()
    9. func chatHandler(s sockjs.Session) {
    10. users.Add(s)
    11. defer users.Remove(s)
    12. for {
    13. m := s.Receive()
    14. if m == nil {
    15. break
    16. }
    17. fullAddr := s.Info().RemoteAddr
    18. addr := fullAddr[:strings.LastIndex(fullAddr, ":")]
    19. m = []byte(fmt.Sprintf("%s: %s", addr, m))
    20. users.Broadcast(m)
    21. }
    22. }
    23. type MainController struct {
    24. beego.Controller
    25. }
    26. func (m *MainController) Get() {
    27. m.TplName = "index.html"
    28. }
    29. func main() {
    30. conf := sockjs.NewConfig()
    31. sockjshandler := sockjs.NewHandler("/chat", chatHandler, conf)
    32. beego.Router("/", &MainController{})
    33. beego.RouterHandler("/chat/:info(.*)", sockjshandler)
    34. beego.Run()
    35. }

    通过上面的代码很简单的实现了一个多人的聊天室。上面这个只是一个 sockjs 的例子,我想通过大家自定义 http.Handler,可以有很多种方式来进行扩展 beego 应用。