javascript - 如何从套接字获取实时消息。io 在科尔多瓦应用程序中?
问题描述
我正在使用 socket.io 在 Cordova 项目中设置聊天功能但是,我无法实时加载消息。
在我的 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.
});
那么,我应该如何处理来自套接字的广播数据以实时显示消息?
解决方案
推荐阅读
- spring - Spring-Integration:无法使用 IntegrationFlow 从自定义消息适配器中使用
- php - 如何将默认字符串与表单一起发送?
- java - 如果使用接口默认方法,如何抛出编译错误?
- tomcat - Bonita BPM:Tomcat 端口已在使用中
- angular - Angular 4:组件重新加载在生产模式和开发模式下的行为不同
- javascript - 垂直滚动条在 IE 11 中对于 textarea 不可见
- ruby-on-rails - Rails 5.2:一次性 CSV 导入模型失败并出现 UnknownAttributeError
- android - 为什么当我想覆盖 onCreateDialog 方法时?
- imap - IMAP 和 sendemail 有什么区别?
- css - 当我使用媒体标签时,它会使我的网站崩溃