github.com/googollee/go-socket.io的两个坑

几年前的项目用过socket.io,用了github.com/googollee/go-socket.io这个库起了服务。

最近需要做一点升级,发现了几个蛋疼的坑。

1.BroadcastToRoom反应迟缓

这个好分析,爬了下代码,broadcast的时候是同步的……同步的……同步的……,不是并发的。

万一有连接超时,必须等超时的连接过了timeout才能发下一个……

真有想法。

解决方案:用ForEach方法自己实现一下

func BroadcastToRoom(s *socketio.Server, nsp string, room string, event string, args ...interface{}) {
s.ForEach(nsp, room, func(c socketio.Conn) {
go func() {
c.Emit(event, args)
}()
})
}


2.400错误,提交的信息丢失

这个怕了整个代码,无解。

首先,有错误后不打任何日志,直接返400错误,这个操作略骚

其次,明明每次请求不是异步的,偏要解析payload搞几个chanel搞成异步,然后有pause和resume的状态,判断了pause会报错,这个我也没抓到点。

参考

https://github.com/googollee/go-engine.io/issues/82

解决方案:

检查代码后,websocket没对应的方法……

客户端强制使用websocket....

强制使用websocket我还走一层socket.io干嘛……

发布于
2020-05-26

用了下go/ast包

感觉还不错。

用来分析代码,自动生成代码。

如果用来代码分析应该也还行。


发布于
2020-04-16

flutter初体验

用flutter做了个小玩意,大概的了解了下。

怎么说呢,感觉乖乖的。

明显不是原生的开发体验,感觉开发体验更接近于phonegap/cordova,但感觉上稍好点。

语气说是一个平台,ui库,不如说更像一个框架,大概是vue/react + bootstrap的感觉。

语法简单,和js很像,开发起来那一套很像前端。

做点小工具不错。

对于flutter最大的期望是能很好的开发桌面端,如果能做到的花可以投入一定的精力。

发布于
2020-04-01

dart...还是有点蛋疼啊

用flutter做了个app,准备了个文字模板,自然想到了用mustcahe。

引用后,发现app起不来了,卡在了“Syncing files to device Android SDK built for x86...”,白屏不继续。

放狗搜了一会,再分段注释,发现是https://pub.dev/packages/mustache 这个库的问题,不支持flutter,需要用https://pub.dev/packages/reflected_mustache这个库

服气的。还没怎么成熟的生态呢,已经开始玩自己不兼容自己了……

发布于
2020-03-27

改代码时留的泪,都是写代码时脑子进的水。

我是怎么想的,会想到给缓存组件加入一个永不过期的功能,还balabala写了一堆代码来实现?

脑子是进水了么?

是进水了么?

是进水了么?

是进水了么?

发布于
2020-03-13