zoukankan      html  css  js  c++  java
  • websocket 发送数据时报 Status code: Invalid frame payload data (1007),Reason: Invalid UTF-8 的原因及处理办法

    故障现现象:

    今天用asp.netcore中间件升级了websocket服务器,在偶尔的情况下会发生服务器断开连接,并抛出错误: Invalid UTF-8。以前用.net写的服务器代码并没有出现这个错误,到处查阅资料也没有得到解决办法。

    自己通过不断的尝试及分析,发现主要是含有中文的消息发送时服务器会断开,但一些含有中文的消息也不报错,初步怀疑是数据库中或者别的途径中含有非UTF8编码的文字,而Javascript不会处理这些文字而直接发送,服务器发现以后就断开连接。

    处理方法:

    查询了很多文档,都没有说怎么处理,我自己想,Javascript发送数据时,按UTF8发送导致编码时出现问题,那我原样发送到服务器,服务器是按Byte数组接收的,会不会没有问题呢?

    说干就干,在发送的地方按2进制发送,果然发送成功。

    代码原来的样子:

    this.socket.send(JSON.stringify(message));

    修改后的样子:

    var blob = new Blob([JSON.stringify(message)]);
    this.socket.send(blob);

    修改后,会有一点点不太方便:chrome中无法直接看发送的消息,发送记录中都显示Binary Data。

  • 相关阅读:
    内网穿透访问Vue项目的时候出现Invalid Host header解决办法
    Java中的super关键字
    java中的Arrays工具类及排序和查找
    Java中方法的覆盖/重写
    java中的数组
    java的内部类概述
    matlab主成分分析PCA
    matlab多元线性回归
    matlab神经网络工具箱
    神经网络(三):前馈神经网络(FNN)
  • 原文地址:https://www.cnblogs.com/showen/p/13214509.html
Copyright © 2011-2022 走看看