gpt4 book ai didi

ruby-on-rails - 如何将聊天消息存储到数据库中?

转载 作者:太空宇宙 更新时间:2023-11-03 22:08:18 24 4
gpt4 key购买 nike

我使用 Node.js 和 Rails 来构建基本的聊天应用程序。现在,当我刷新页面时,所有消息都会被删除。所以我想使用 AJAX 将消息存储在 Rails 数据库中。我怎样才能做到这一点?

nodejs/index.js

console.log("Server is starting...");

const http = require('http');

const hostname = '0.0.0.0';
const port = '8000';

console.log("Creating server...");

const server = http.createServer().listen(port, hostname);

console.log('chat server running on '+ hostname + ':' + port);

let socketList = require('socket.io').listen(server);

socketList.sockets.on('connection', function (socket) {
console.log('connection received');
console.log('socket in node = ', socket);

socket.on('disconnect', function () {
console.log('socket disconnected');
});

socket.on('join_room', function (data) {
socket.join(data.chatroom);

socketList.in(data.chatroom).emit('user_joined', {
user_email: data.user_email,
chatroom: data.chatroom
});
});

socket.on('send_message', function (data) {
console.log(data.message, data.user_email);
socketList.in(data.chatroom).emit('receive_message', {
message: data.message,
user_email: data.user_email
});
});
});

rails/application.js

window.addEventListener('load', function (ev) {

var user_email = $('#current_user_email').html(); // checking if user login

if(user_email){
var socket = io.connect('http://0.0.0.0:8000');
console.log('socket in rails = ' , socket);

socket.on('connect', function () {
console.log('connection established to node server');
});

socket.emit('join_room',
{
user_email: user_email,
chatroom: 'home'
});

socket.on('user_joined', function (data) {
console.log(data.user_email + ' joined ' + data.chatroom);
});

$('#send-message').click(function () {
let msg = $('#chat-message-input').val();

if(msg !==''){
socket.emit('send_message', {
message: msg,
user_email: user_email,
chatroom: 'home'
});
}

$('#chat-message-input').val('');
});

socket.on('receive_message', function (data) {
console.log(data.user_email, data.message);

let newMessage = $('<li>');
let messageType = 'other-message';
if (data.user_email === user_email){
messageType = 'self-message';
}
newMessage.addClass(messageType);

newMessage.append($('<span>', {
'html': data.message
}));
newMessage.append($('<sub>', {
'html': data.user_email
}));

$('#chat-messages-list').append(newMessage);
});

还有哪些不同的方法可用于在数据库中存储消息?我们是否也可以使用 Node.js 直接存储在 Rails 数据库中?

最佳答案

不会写代码,但基本上你可以开始:

rails g scaffold Chat name:text chat:text

然后使用 ajax 发布到/chat.json 设置数据,例如 {name:user_name, chat:textxt}

然后你还需要从/chat.json 询问所有用户聊天另外你需要在rails中写索引函数

if params[:id]) do
@chat = Chat.find(name:username)
else
@chat = Chat.all
end

然后向用户显示这些消息但这是让你继续前进的基本概念

关于ruby-on-rails - 如何将聊天消息存储到数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49929238/

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