我使用 node.js 框架构建了一个简单的客户端,它允许用户将线程发布到虚拟白板上。
但是,每次新用户加入会话时,他们都无法查看其他用户在他们到达之前在会话中发布的任何想法。
1) 我决定缓解此问题的最佳方法是在新用户加入会话时从文本文件中加载旧线程。但是我该怎么做呢?
2)我想知道如何将数据写入此文本文件,以便每当有人发布线程时,它都会写入文本文件。
3)我想知道是否可以从这个文本文件中删除值?我正在开发一项功能,允许管理员从虚拟白板上删除线程。这些值当前在客户端被删除,但我也希望它们在文本文件中被删除。
到目前为止,这是我的代码:
应用程序.js
var express = require('express'),
app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server);
server.listen(3000);
app.get('/', function(req, res) {
res.sendfile(__dirname + '/index.htm');
});
app.use(express.static(__dirname + '/assets'));
io.sockets.on('connection', function(socket) {
socket.on('send message', function(data) {
io.sockets.emit('new message', data);
});
});
主要的
jQuery(function ($) {
$('#chat').on('click', '.delete', function(e) {
$(this).parent().remove();
});
var socket = io.connect();
var $messageForm = $('#sendmessage');
var $messageTitle = $('#title');
var $messageBox = $('#message');
var $chat = $('#chat');
$messageForm.click(function (e) {
if ($.trim($("#title").val()).length === 0) {
alert('You must provide valid input');
$messageTitle.val('');
$messageBox.val('');
return false;
}
if ($.trim($("#message").val()).length === 0) {
alert('You must provide valid input');
$messageTitle.val('');
$messageBox.val('');
return false;
} else {
e.preventDefault();
socket.emit('send message', '<span class="idea"><b>' + $messageTitle.val() + '</b>' + ' - ' + $messageBox.val() + ' ' + '[' + '<a class="delete" href="#">Delete</a>' + ']</span>');
$messageTitle.val('');
$messageBox.val('');
}
});
socket.on('new message', function (data) {
$chat.prepend(data)
});
});