socket.io-client 后台消息包含中文连接断开,请问有人遇到过吗

在实际项目中是第一次收到包含中文消息时连接中断,重连后正常,为了提问我把相关代码提取出来发现前端一收到含中文消息就不断报错重连了
server

import http from 'http';
import socket from 'socket.io';

const server = http.createServer();
const io = socket(server);

io.on('connection', (client) => {
  console.log('SOCKET->connection:' + client.id);
  client.on('message', async function (message) {
    console.log(message);
    client.send({message: 'success'})
  });

  client.on('disconnect', async function () {
    console.log('SOCKET->disconnect:' + client.id);
  });
});

server.listen(3001);

console.log('server running http://localhost:3001');

client

import io from 'socket.io-client';

const socket = io('ws://localhost:3001');

socket.on('connect', () => {
  console.log('connect');
  socket.send({message: 'hello'})
});

socket.on('disconnect', () => {
  console.log('disconnect')
});

socket.on('error', err => {
  console.log(err)
});

socket.on('message', res => {
  console.log(res)
});

此时是英文消息是正常的
![![浏览器][2]][1]

服务器

可是一旦把服务器的

client.send({message: 'success'})

替换成包含中文的

client.send({message: '你好'})

立刻就崩溃了,前端不断的报错重连
浏览器
服务器

socket.io socket.io-client
都已升级到 2.1.1
有大神知道什么原因吗

阅读 4.4k
2 个回答

从早上发现这个问题一直在找原因,结果刚才试了下用传统的标签引用

<script type=text/javascript src=//cdn.bootcss.com/socket.io/2.1.1/socket.io.js></script>

居然不报错了,我真的相当无语,一整天时间浪费在这上面

我看socket.io里有关于中文的issue,issue,没有很好的解决办法
建议通过编解码进行收发,或者通过buffer

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题