zoukankan      html  css  js  c++  java
  • 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会接收到推送,不连接就会接收不到,就算再次链接也依然接收不到,(项目目前不要求做,就没做,后面做了补上来)

  • 相关阅读:
    蓝鸥0c考试 绝密
    省市县用对象实现
    省市区用字典实现
    3道比较有用的oc练习题
    ios 开发 OC编程 类的扩展 协议 延展和 类目
    ios 开发 OC编程 内存管理
    ios 开发 OC编程 块语法bolck的一些应用
    ios 开发 OC编程 块语法bolck
    中等难度的通讯录.字典 动态分组法
    TestFlight
  • 原文地址:https://www.cnblogs.com/zhangym/p/6850320.html
Copyright © 2011-2022 走看看