我的策划大佬离职了,在他go之前我都没有解决好一个问题,感觉如果我换了工作面试的时候,别人问到 “你在做项目的时候,遇到的最头疼的问题是什么,是怎么解决的?”,首先想到的应该也是他,今天感觉是时候写点东西了。
做 PMGO 的时候,涛哥提出想要用浏览器的桌面推送,来替代 hx 的提醒,最早提出WebSocket的想法的,其实不是我们组,别的组也有用了,但没法借鉴,大佬们都是Node.js实现的,用Nginx做反向代理来部署它,我只有 IIS,.Net 支持 WebSocket 貌似也不是太久远的事,当时考虑用,也没有多少能借鉴的,后来在 Github 上找到了 Fleck( https://github.com/statianzo/Fleck ),虽然不是fork最多的,但用起来是最方便的,对于内部系统来说,在不考虑最大连接数的问题下,它相当的好用(并不是说它不支持而是有一些问题,参考 issue)
代码写出来了,感觉十分的精致,然后我们就上线了。
正式服更新后还是很稳定的,然后我们打算在此基础上做迭代看板的实时更新。大约一个月后,测试服的WebSocket报了个异常,“当前端口被占用”,我一开始认为是更新测试服时,客户端与服务端的连接没有及时断开,端口资源被强占的情况下无法再次使用相同的端口做服务,因此我等了一下尝试打开服务,可以成功启动,不了了之。就在这个问题被我忽视了又一个月后,尽管在此期间出现了少量的端口占用错误,这一次,服务再也启动不了了,不管等了多久。
我申请连服务器,找到占用端口的进程id,用pid去任务管理器找对应的进程,没有找到。tasklist|findstr 找到对应端口的进程状态,找到了一大堆 TIME-WAIT 进程,对应的那个pid就是刚才找到的。无奈内网无法截图留念,我一定会珍藏它......
查看了他的issue,有个作者提到连接瓶颈,但貌似是ssl证书的问题,于是乎我在这个坑上摔倒了......