当前位置: 首页> 教育> 培训 > golang websocket 发送消息莫名其妙断开的问题记录

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

时间:2025/8/22 2:38:18来源:https://blog.csdn.net/qq_38189542/article/details/139075904 浏览次数:0次

概述

公司需要做个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后,问题解决。

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: