Я настраиваю функцию чата в проекте Cordova, используя socket.io
Однако я не могу загрузить сообщение в режиме реального времени.
На стороне клиента моего приложения Cordova я написал код для кнопки отправки сообщения, как показано ниже:
$('#send').click(function() {
if ($('#msg_inp').val()) {
var data = {
fromId: fromId,
toId: toId,
message: $('#msg_inp').val()
}
var child = `<div class="media"><div class="media-body media-color-right">`
+ (data.message) + `</div></div> `
$('#chatbox').append(child);
$('#msg_inp').val('');
socket.emit('chatting',data);
}
}
);
Я отправляю данные на сервер для хранения сообщения в базе данных.
Код на стороне сервера такой:
socket.on('chatting', function (data) {
userM.findSenderAndReceiver(data.fromId, data.toId, function (err, result) {
console.log(result);
if (err) {
console.log(err);
throw err;
} else {
userM.insertMessages(data, function (err, result) {
if (err) {
throw err;
console.log(err);
}
});
console.log(data);
data.chattingwith = result.from.username;
data.chattingwithId = result.from.id;
data.from_image_url = result.from.image_url;
data.to_image_url = result.to.image_url;
console.log(data);
socket.broadcast.to(result.to.socketID).emit('chatting', data);
}
});
});
На стороне сервера после сохранения сообщения (как видно из приведенного выше кода) я отправляю данные в socketID получателя для отображения чата в окне чата получателя в режиме реального времени.
Однако я не могу получить широковещательное сообщение на стороне клиента.
Я пытался это так:
socket.on('chatting',function(data){
console.log(data) // -> This data doesn't get displayed.
});
Итак, как мне обрабатывать передаваемые данные из сокета для отображения сообщения в реальном времени?