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会接收到推送,不连接就会接收不到,就算再次链接也依然接收不到,(项目目前不要求做,就没做,后面做了补上来)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步