最近要做后台主动推送:(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会接收到推送,不连接就会接收不到,就算再次链接也依然接收不到,(项目目前不要求做,就没做,后面做了补上来)

golang iris下面的websocket的更多相关文章

  1. 在Spring Boot框架下使用WebSocket实现消息推送

    Spring Boot的学习持续进行中.前面两篇博客我们介绍了如何使用Spring Boot容器搭建Web项目(使用Spring Boot开发Web项目)以及怎样为我们的Project添加HTTPS的 ...

  2. eclipse 下面的folder,source folder,package的区别与作用

    首先明确一点,folder,source folder,package都是文件夹,既然是文件夹,那么任何的文件都可以往这三种文件夹下面的放.1.他们的区别folder就是普通的文件夹,它和我们wind ...

  3. 根据div 标签 查看数组@class=modulwrap 下面的/table/tbody/tr/td

    <div class="modulwrap"> <div class="request_title"> <span class=& ...

  4. jz2440: linux/arch/arm/下面的plat-和mach-

    jz2440: linux/arch/arm/下面的plat和mach plat-s3c24xxmach-s3c2440mach-s3c2410 ====================== 1. 三 ...

  5. 在Spring Boot框架下使用WebSocket实现聊天功能

    上一篇博客我们介绍了在Spring Boot框架下使用WebSocket实现消息推送,消息推送是一对多,服务器发消息发送给所有的浏览器,这次我们来看看如何使用WebSocket实现消息的一对一发送,模 ...

  6. syslog之三:建立Windows下面的syslog日志服务器

    目录: <syslog之一:Linux syslog日志系统详解> <syslog之二:syslog协议及rsyslog服务全解析> <syslog之三:建立Window ...

  7. webkit下面的CSS设置滚动条

    webkit下面的CSS设置滚动条 1.主要有下面7个属性: ::-webkit-scrollbar 滚动条整体部分,可以设置宽度啥的 ::-webkit-scrollbar-button 滚动条两端 ...

  8. Lazarus下面的javascript绑定另外一个版本bug修正

    Lazarus下面的javascript绑定另外一个版本bug修正 从svn 检出的代码有几个问题 1.fpcjs.pas 单元开始有 {$IFDEF FPC} {$MODE delphi} {$EN ...

  9. 给虚拟机下面的ubuntu系统增加硬盘存储空间

    给虚拟机下面的ubuntu系统增加硬盘存储空间   由于ubuntu系统是安装在vsphere上面的,所以可能会和vmware上面的有一点区别,打开exsi系统的配置页面,如下图所示. 选择添加存储器 ...

随机推荐

  1. CXF-JAX-RS开发(一)入门案例

    一.简介 资源驱动.基于HTTP协议[按照标准指定URL,就可以访问数据]以XML|JSON格式传输数据. 二.quickstart 1.创建maven project[Packaging:jar] ...

  2. MxNet教程:使用一台机器训练1400万张图片

    官网链接:http://mxnet.readthedocs.io/en/latest/tutorials/imagenet_full.html Training Deep Net on 14 Mill ...

  3. Centos6.6 编译安装nginx

    一.基本环境 nginx 1.9版以后增加了一些新的特性,支持tcp负载均衡,不过这次还是用1.8.0,这里面有个memcached的代理模块,有时间再测试下 1.centos6.6 2.nginx1 ...

  4. fiddler抓包 IOS11以上系统

    想要使用fiddler对iphone X进行抓包,按照以前的配置方法,走一遍.还是抓不成,原来是因为IOS11操作系统中,安装完证书之后,还需要再手动信任证书才能正常抓包. 以下内容来自:https: ...

  5. react功能实现-数组遍历渲染

    在react中如何将一个数组遍历,并且逐个渲染在页面上? 1.在jsx渲染中,如果这个变量是一个数组,则会展开这个数组的所有成员. var arr = [ <h1>Hello world! ...

  6. [Java]链表的打印,反转与删除

    class Node{ public int value; public Node next=null; public Node(int value) { this.value=value; } }p ...

  7. vue-路由使用

    路由安装 终端下载路由插件 npm install vue-router --save-dev 配置 在main.js中引入插件 //Router 为自定义名 vue-router 为插件的名字 im ...

  8. apicloud 注意事项

    页面布局时头部和内容一定要分开,状态栏寖入式要用.可以用api.sendEvent广播出去,api.addlisterten监听. api.openWin打开页面会有黑色闪屏,加bgColor:'#f ...

  9. eas之打开窗体

    UIContext uiContext=new UIContext(this);IUIWindow uiWindow=UIFactory.createUIFactory(UIFactoryName.E ...

  10. hdu 3001(三进制状压)

    题目 解法 看到这道题,我们就会想到旅行商问题.但是这里每一个点可以经过最多两次,所以我们用三进制表示就好了. 代码 #include <iostream> #include <cs ...