gpt4 book ai didi

Node.js + socket.io 返回事件数据

转载 作者:搜寻专家 更新时间:2023-11-01 00:08:47 25 4
gpt4 key购买 nike

我目前正在建立一个小型聊天室。

当有人按下回车键时,它应该将消息提交给服务器,如果插入成功则返回一些状态信息。

有没有办法在每个事件上返回一些数据,或者我是否必须从服务器发起另一次发送以通知客户端状态?

客户端

$('textarea').keypress(function(e) {

if(e.which == 13) {

var msg = $.trim(this.value);

if(msg.length > 0) {

socket.send(msg, function() {

// Here I need to have some result
// returned by the server to notify the user
// if everything went fine
//this.value = '';
});
}

return false;
}
});

服务器

socket.on('message', function() {

db.query("INSERT INTO chat (message, ip, time) VALUES (?, INET_ATON(?), NOW())", [msg, socket.handshake.headers['x-forwarded-for'] || socket.handshake.address.address], function(error) {

if(!error) {
io.sockets.send(msg);
} else {
console.log(error);
}

});
});

最佳答案

我最近遇到了这个问题。我的解决方案是将命令 ID 放入每条消息中。我构建了一个小函数来在客户端创建一个 ID ( here )。所以流程看起来像这样:

客户端

  • 当用户做了一些需要保存的事情时:
  • 为命令生成一个ID
  • 生成描述命令的对象
  • 通过套接字向服务器发送命令

服务器

  • 接收指令信息
  • 应用命令(数据库等)
  • 如果命令成功,通过带有“命令完成”消息类型的套接字将命令 ID 发送回客户端

客户端

  • 收到命令完成信息
  • 在客户端将该命令标记为“完成”

服务器端代码:

socket.on 'du', (msg) =>
@saveData(msg, ->
# broadcast to other users if needed
socket.emit('cc', msg.data.commandId)
)

关于Node.js + socket.io 返回事件数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16758808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com