iris 的 websocket 初始接触

在查看learnku的iris文档时,发现里面提供的关于websocket的样例无法正确执行,查看其在GitHub上提供的样例(https://github.com/kataras/iris/tree/maste...) (此处多说一句之所以选examples/websocket/下其他的测试包,基本都是需要配合前端写单独的js才能执行)在对其中一些代码执行时需要稍加需改,因为我们一般在初始试用是只是在一个浏览器打开websocket在线测试网站进行测试,这里会涉及到跨域问题导致在连接客户端时直接就是失败的,下面附上针对此处修改代码

    mytmpu:=new(gorillawo.Upgrader)
    mytmpu.CheckOrigin= func(r *http.Request) bool {
        return true
    }
    MyUpgrader:=gorilla.Upgrader(*mytmpu)

    websocketServer := websocket.New(
        MyUpgrader, /* DefaultGobwasUpgrader can be used too. */
        websocket.Events{
        websocket.OnNativeMessage: func(nsConn *websocket.NSConn, msg websocket.Message) error {
            log.Printf("Server got: %s from [%s]", msg.Body, nsConn.Conn.ID())

            nsConn.Conn.Server().Broadcast(nsConn, msg)
            return nil
        },
    })

    websocketServer.OnConnect=func(c *websocket.Conn) error {
        fmt.Printf("[%s] Connected to server!\n", c.ID())
        return nil
    }

默认DefaultGobwasUpgrader 中没有定义CheckOrigin方法进而启用默认验证跨域,这里直接将跨域验证返回ture就可以使用随意的网页客户端测试了

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 2

我用过gorilla项目的websocket功能,还不错,就是不知道万人在线聊天是否有问题,还没有大规模测试,写了个相亲软件的在线聊天功能。

3年前 评论

能帖完整的代码吗 ?

3年前 评论
Limpid (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!