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

发布于 2022-09-07 16:16:24 字数 1614 浏览 25 评论 0

在实际项目中是第一次收到包含中文消息时连接中断,重连后正常,为了提问我把相关代码提取出来发现前端一收到含中文消息就不断报错重连了
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
有大神知道什么原因吗

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

鲜血染红嫁衣 2022-09-14 16:16:24

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

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

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

冬天旳寂寞 2022-09-14 16:16:24

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文