鍍金池/ 問(wèn)答/Java  HTML/ socket.io-client 后臺(tái)消息包含中文連接斷開(kāi),請(qǐng)問(wèn)有人遇到過(guò)嗎

socket.io-client 后臺(tái)消息包含中文連接斷開(kāi),請(qǐng)問(wèn)有人遇到過(guò)嗎

在實(shí)際項(xiàng)目中是第一次收到包含中文消息時(shí)連接中斷,重連后正常,為了提問(wèn)我把相關(guān)代碼提取出來(lái)發(fā)現(xiàn)前端一收到含中文消息就不斷報(bào)錯(cuò)重連了
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)
});

此時(shí)是英文消息是正常的
![![瀏覽器][2]][1]

服務(wù)器

可是一旦把服務(wù)器的

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

替換成包含中文的

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

立刻就崩潰了,前端不斷的報(bào)錯(cuò)重連
瀏覽器
服務(wù)器

socket.io socket.io-client
都已升級(jí)到 2.1.1
有大神知道什么原因嗎

回答
編輯回答
下墜

從早上發(fā)現(xiàn)這個(gè)問(wèn)題一直在找原因,結(jié)果剛才試了下用傳統(tǒng)的標(biāo)簽引用

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

居然不報(bào)錯(cuò)了,我真的相當(dāng)無(wú)語(yǔ),一整天時(shí)間浪費(fèi)在這上面

2018年7月17日 20:26
編輯回答
檸檬藍(lán)

我看socket.io里有關(guān)于中文的issue,issue,沒(méi)有很好的解決辦法
建議通過(guò)編解碼進(jìn)行收發(fā),或者通過(guò)buffer

2017年1月3日 12:09