当前位置:   article > 正文

golang websocket 发送消息莫名其妙断开的问题记录

golang websocket 发送消息莫名其妙断开的问题记录

概述

公司需要做个B/S架构的前端展示项目,当前以为是小case,但是在实现后端功能的时候,还是被坑了。

功能描述

项目需要实现的功能是调用外部第三方程序, 实时读取第三方程序的输出,发送到前端展示。因为懒得切换平台以及三方程序还未就绪,所以在Windows写了个BAT脚本做仿真,顺带调试程序。

问题描述

通过golang的os.exec执行三方程序(BAT脚本),通过管道读取程序输出的时候,发现给websocket发数据的时候,前端的链路会莫名其妙的提示close,也没有其他错误。

问题根源

经过一通瞎几把排查,最后将根源锁定在三方程序(BAT脚本)的输出中,发现输出中有中文字符,因为Windows系统的默认编码是GBK或者GB2312,但是golang的源码使用的都是UTF-8,导致往Websocket写GBK的中文数据([]byte)的时候出现异常,接着触发了后端代码发起了主动关闭动作。

注意:
如果直接在golang的代码里面直接写中文,通过Websocket发送是不会出错的,因为代码文件中文和代码文件的编码一致的,所以不会出现问题

解决方法

脚本内部通过chcp 65001将编码设置成UTF-8后,问题解决。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/634489
推荐阅读
相关标签
  

闽ICP备14008679号