Node.js socket.io emit не работает с кириллицей

190
11 января 2019, 00:10

имеется два варианта кода на сервере:

socket.on('list', function(){
    socket.join('list');
    socket.emit('init', "Test");
}

И второй:

socket.on('list', function(){
    socket.join('list');
    socket.emit('init', "Тест");
}

Разница лишь в том, что в первом варианте "Test" написан латиницей, а во втором - кириллицей. При этом вариант с кириллицей срабатывает в одной из пяти раз, он просто не всегда отправляет этот "emit", но в "on" на сервере действия срабатывают. Подскажите пожалуйста, в чем может быть причина.

Answer 1

@qwabra Не понял. ? – Alexey 2 часа назад

если вы хотите протестировать socket.emit('init', "кириллический текст");

то встаёт вопрос, почем вы это делаете внутри socket.on('list'
ещё и после socket.join('list
вы уверены что подключение к комнате происходит синхронно?
вы уверены, что ваш list с клиента приходит?
вы уверены, что у сокетио не сносит крышу при подключении к комнате, если клиент уже в ней?

// socket.on('list', function(){ // убрать
//     socket.join('list');      // убрать 
    socket.emit('init', "Test"); // оставить лишь то, что тестируете
// }                             // убрать

@Alexey, вот что я хотел сказать.

да, версию ноды и библиотеки укажите в вопросе!

у меня всё работает.

  • "socket.io": "2.1.1"
  • "node": "10.1.0"

back

io.on('connection', s =>
{
    let counter = 0
    console.log('\nconnection\n');
    let Rrlk = () =>
    {
        counter++
        // s.emit('qwabra', "Test " + counter)
        // s.emit('qwabra', "ТЕСТИРУЮ " + counter)
        s.emit('qwabra', 'ТестиРую ' + counter)
        // s.emit('qwabra', `test_ИРУЮ ${counter}`)
        console.log(counter);
        !(counter % 5) && console.log('');
    }
    let interval = setInterval(Rrlk, 1200)
    s.on('disconnect', () =>
    {
        clearInterval(interval)
    })
})

front

let old = null
let counter = 0
socket.on('qwabra', d =>
{
    counter++
    console.log(counter, d)
    if (old && old !== counter - 1)
        console.error('old !== LioPgh - 1', old !== counter - 1, 'old', old, 'LioPgh', counter)
})
READ ALSO
Как переписать функции fadeIn, fadeOut в нативном javascripte?

Как переписать функции fadeIn, fadeOut в нативном javascripte?

Есть блоки, которые замещают один одного при клике на кнопку без перезагрузки страницыКод я написал используя jquery, но теперь думаю, как его...

153
Как добавить новый тег после другого тега внутри тега?

Как добавить новый тег после другого тега внутри тега?

Надо внутри тега article добавить новый тег hr после каждого p( c помощью js)Попробовал такой способ:

171
Как вывести значение JSON файла в тег input

Как вывести значение JSON файла в тег input

Может вопрос и очень тупой, но всё же Как мне строку из JSON файла занести в input, что бы в дальнейшем получить возможность редактировать её?

157
Дергается к верху сайт после загрузки анимации

Дергается к верху сайт после загрузки анимации

Ссылка на сайт! Для анимации использовалась библиотека animationcss Если открыть на мобиле, то при загрузке очередного блока с анимацией сайт...

154