• golang iris下面的websocket


    最近要做后台主动推送:(iris框架,封装的有wesocket,刚开始以为直接拿过来用,结果不是现在贴一下代码,写一下遇到的坑)

    func main() {
        app := iris.New()
        app.Adapt(iris.DevLogger())
        app.Adapt(httprouter.New())
        //创建websocket服务器
        ws := websocket.New(websocket.Config{
            Endpoint: "/pushmessage",
        })
        ws.OnConnection(func(c websocket.Connection) {
            c.Join("/push")
            go func() {
                for {
                    var datas = <-models.CHANDATA(这里就是遇到的 坑当时一直钻牛角尖怎么把这里从man函数拿出去,其实只要直接勇哥chananel传进来就行,推商铺那个成功之后在一个chananel回去就可以了,)
                    stringdata := datas.(string)
                    conns := ws.GetConnectionsByRoom("/push")
                    for _, v := range conns { //遍历所有的链接,发送(这里要遍历所有的链接,不然第一次推送会推送给第一个链接上的,第二次推送就会推送给第二个链接上的,不是所有的的都会推送)
                        err := v.EmitMessage([]byte(stringdata))
                        if err != nil {
                            v.Disconnect()
                        }
                    }
                }
            }()
        })
        app.Adapt(
            ws,
            sessions.New(sessions.Config{
                Cookie:                      "mysessionid",
                Expires:                     0,
                CookieLength:                32,
                DisableSubdomainPersistence: false,
            }),
            view.HTML("./src/views", ".html"),
            cors.New(cors.Options{
                AllowedOrigins:   []string{"*"},
                AllowCredentials: true,
            }),
        )

    现在还存在连接上websocket会接收到推送,不连接就会接收不到,就算再次链接也依然接收不到,(项目目前不要求做,就没做,后面做了补上来)

  • 相关阅读:
    省市区distpicker,从数据库里查出来回显,动态绑定
    ajax请求里面的success和error里面的layer.msg,status: "parsererror",刷新父界面,碰到的一些问题
    排序算法时间和空间算法度
    适配器模式
    守护线程
    工厂模式之简单工厂模式、工厂模式、抽象工厂
    ArrayList源码分析和缩减版手写ArrayList(jdk1.8和1.9)
    HashMap排序题
    二进制中1的个数
    anaconda指定镜像源,解决conda下载速度慢失败问题
  • 原文地址:https://www.cnblogs.com/zhangym/p/6850320.html
Copyright © 2020-2023  润新知